質問内容
配列だとaddEventListenerができないのでしょうか。
またfor文に書き換えたいのですが、できないのでしょうか。
JavaScript
1コード 2var target = []; 3for(var i=0; i<3; i++){ 4 target[i] = document.getElementById("word"+i+1); 5} 6 7 8//以下の部分がうまくいかない 9target[0].addEventListener('mouseover', () => { 10 mouseOnSlideAnimation(0); 11 setTimeout("mouseOnSlideAnimationBack(0)",1000); 12},false); 13target[1].addEventListener('mouseover', () => { 14 mouseOnSlideAnimation(1); 15 setTimeout("mouseOnSlideAnimationBack(1)",1000); 16},false); 17target[2].addEventListener('mouseover', () => { 18 mouseOnSlideAnimation(2); 19 setTimeout("mouseOnSlideAnimationBack(2)",1000); 20},false); 21
この時のエラーは
Cannot read property 'addEventListener' of null
です。
ただこのエラーが発生しているのがtarget[0].addから始まる文ではなく、target[1].addから始まる文がエラーになっています。
試み1
そして配列でうまくできるのであれば、このようにfor文でうまくやりたいと思っています。
JavaScript
1コード 2for(var i=0; i<20; i++){ 3 target[i].addEventListener('mouseover', () => { 4 mouseOnSlideAnimation(i); 5 setTimeout("mouseOnSlideAnimationBack(i)",1000); 6 },false); 7} 8
この時のエラーも
Uncaught TypeError: Cannot read property 'addEventListener' of null
でした。
試み2
以下のことはエラーが出ずにうまくいきました。
JavaScript
1コード 2target = document.getElementById("word1"); 3target.addEventListener('mouseover', () => { 4 mouseOnSlideAnimation(1); 5 setTimeout("mouseOnSlideAnimationBack(1)",1000); 6},false);
配列を使わないとうまく動作しました。
JavaScript
1コード 2var target = []; 3for(var i=0; i<3; i++){ 4 target[i] = document.getElementById("word"+i+1); 5} 6target[0].addEventListener('mouseover', () => { 7 mouseOnSlideAnimation(0); 8 setTimeout("mouseOnSlideAnimationBack(0)",1000); 9},false);
配列も0番目だけはうまくいきます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/21 10:45