質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

574閲覧

Jqueryで九九表を作る

momokae0416

総合スコア9

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2020/01/20 15:18

編集2020/01/20 15:57

jquery初心者です。
課題でjqueryで九九表を作っています。
いろいろ参考にしながら以下の形で実装が成功しましたが、疑問点があります。

違う実装の仕方も考えまして、コメントアウトしている、
//$("td").html(i + "" + j +"=" + ij) ;を出し、
代わりに、td.html(i + "" + j +"=" + ij) ;をコメントアウトしたら、数字が全て9*9=81になってしまいます。なぜ、繰り返しが効かないのでしょうか。
また、なぜ、最後の行のみ空欄になってしまうのでしょうか……。

宜しくお願いいたします。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>jQuery</title> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script> /* 課題処理を追加 */ $(function(){ for (var j = 1;j <= 9;j++){ var tr = $("<tr>"); for (var i = 1;i <= 9;i++){ var td = $("<td>"); td.html(i + "*" + j +"=" + i*j) ; //$("td").html(i + "*" + j +"=" + i*j) ; tr.append(td); } $("#matrix").append(tr); } }); </script> </head> <body> <table id="matrix" border="1"> <caption>九九表</caption> </table> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2020/01/20 15:49

コードは、コードブロックで記載して下さい。 <code>ボタンで出てくる文字列を使えば、コードブロックになります。 質問は編集できます。
momokae0416

2020/01/20 15:58

miyabi_takatsuk様 ご指摘ありがとうございました!!機能を分かっておりませんで、失礼いたしました…!
guest

回答1

0

ベストアンサー

var td = $("<td>"); td.html(i + "*" + j +"=" + i*j);と、
$("td").html(i + "*" + j +"=" + i*j);では、文字列を入れる対象がちがうからです。

前者は、新たにtd要素を生成し、その中に文字列を入れるため、意図した結果となりますが、
後者は、HTML内の、td要素の文字列を変更といった動作になります。
HTML内に、td要素は、最初は存在しないため、空のjQueryオブジェクトの中に、文字列が入ってるだけ、となるため、
一発目は、tdが挿入されますが、
二発目以降は、HTML内の全てのtd要素を常に変更するので、for処理の最終結果の9 * 9 = 81に全て置き換わってしまう、というわけです。

つまりは、最初行った処理が最適解であり、
二つ目の処理は間違った処理(1個目の処理と同じようで違う処理)になってたわけですね。

投稿2020/01/20 16:04

編集2020/01/21 02:17
miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momokae0416

2020/01/20 16:20

ご回答ありがとうございます! とても分かりやすいご説明、大変助かりました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問