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

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

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

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

Q&A

解決済

2回答

1436閲覧

[JS]dotinstall/#24addEventListener

star24star

総合スコア115

JavaScript

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

0グッド

1クリップ

投稿2016/06/12 12:36

#24 イベントを設定してみよう

ドットインストールの上記の回を参考にローカルで実行してみましたところ、
Uncaught TypeError: Cannot read property 'addEventListener' of null
というエラーが出ました。
綴り間違いなのか、書き方が間違っているのか色々探ってみたのですが何故エラーになってしまうのか分かりません。
どなたかわかる方がいらっしゃいましたらご教授頂けると幸いでございます。

JavaScript

1// buttonのidを取得する 2document.getElementById('add') 3 .addEventListener('click',function(){ 4 // 追加する要素とテキストを格納 5 var greet = document.createElement('p'); 6 text = document.createTextNode('hello, world'); 7 // 要素とテキストを追加する 8 document.body.appendChild(greet).appendChild(text); 9});

HTML

1 <button id="add">Click</button>

※ファイル自体は読み込むことが出来ています。

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

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

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

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

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

guest

回答2

0

取り敢えず問題になっていた
Uncaught TypeError: Cannot read property 'addEventListener' of nullについて

参考URL
【javascript】addEventListenerなどのイベントについて

  • 問題

headタグの中でjsファイルを読み込んでいたが、
上から順に処理されるため、id='add'が見つからないのでnullになっていた。

  • 解決

headタグの中で読み込んでいたjsファイルをbodyタグの中の一番下へ持ってくる
(取得したいidより後でjs処理させる)

もっと上級者になれば他の解決方法があるのかもしれませんが
一旦これで解決。


追記 : headタグの中でもちゃんとjsが処理してくれる方法

jsファイルはheadタグの中でないと何となく気持ち悪いのでもっと調べた結果、
まずはbody要素内全てを読み込んだ後に処理させれば良いということが分かりました。

JavaScript

1// body要素内のすべてを読み込む 2window.onload = function() { 3 var add = document.getElementById('add'); 4 add.addEventListener('click', function(){ 5 var greet = document.createElement('p'); 6 var text = document.createTextNode('hello, world'); 7 document.body.appendChild(greet).appendChild(text); 8 }); 9}

投稿2016/06/12 13:07

編集2016/06/12 13:28
star24star

総合スコア115

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

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

0

ベストアンサー

var greet = document.createElement('p'); text

ここで、('p')の後がセミコロンで終わってますが、「,」です。変数textにvarなりが適用されていない状態です。上記の書き方なら、

var greet = document.createElement('p'); var text...

こう書く必要があります。

連続して定義する場合は、

var greet = document.createElement('p'), text ....

こういう感じですね。

動作サンプル
では、特にエラーはでていないようですけれども。

投稿2016/06/12 12:43

編集2016/06/12 12:53
hidekichi

総合スコア366

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

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

star24star

2016/06/12 12:48

何と…本当ですね! 「,」の書き方はあまり慣れていないので普通に var greet = document.createElement('p'); var text = document.createTextNode('hello, world'); と書くことにしました。しかし未だエラー内容は解決せず…。 idが取得できていないのでしょうか…;
star24star

2016/06/12 13:06

すみません…自己解決しました。 javascriptの読み込む順番をちゃんと理解していなかったようです。 varのご指摘及びご回答、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問