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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

708閲覧

javascript コードの位置で挙動が変わる

ShinKoba

総合スコア8

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/10/28 03:59

javascript

1コードvar parent_text = document.querySelector('.q12-result'); 2var btn_12 = document.querySelector('.q12-btn'); 3 btn_12.addEventListener('click',function(){ 4 var child_p = document.createElement('p'); 5 child_p.textContent = 'Google'; 6 parent_text.appendChild(child_p); 7 })

javascript

1コードvar parent_text = document.querySelector('.q12-result'); 2var btn_12 = document.querySelector('.q12-btn'); 3 var child_p = document.createElement('p'); 4 btn_12.addEventListener('click',function(){ 5 child_p.textContent = 'Google'; 6 parent_text.appendChild(child_p); 7 }) 8`` 9 10 11```html 12コード <div> 13 <p>Q12</p> 14 <p> 15 ボタンがクリックされたときに、<br> 16 押されたボタンと同じテキストを持つ、<br> 17 pタグを作成して画面に表示する 18 </p> 19 <br> 20 <button class="q12-btn">Google</button> 21 22 <div class="q12-result"></div> 23 24 </div> 25

googleの表示が一つ目のコードだとクリックされた回数分でるのに対して、二つ目のコードだと一回しかでないのはどうしてでしょうか?
ご教授いただければ幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

1つ目のコードは.q12-btnのボタンを押すたびに、child_pという要素を新たに作り出して.q12-resultの要素に対してappendChild()を実行しているためです。

2つ目はchild_pをグローバル変数として先に定義しているため、2回目以降のappendChild()で追加しようとしても同じ要素だと判定されてしまうためです。

上記のリファレンスからの引用になりますが、

追加しようとしたノードが既に存在していたら、それは現在の親ノードから除かれ、新しい親ノードに追加されます

この仕様が反映されているためです。

投稿2020/10/28 04:07

nekoniki

総合スコア2409

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

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

ShinKoba

2020/10/28 12:47

そういう事だったんですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問