内部でのイベントリスナーの動作forLoop?イベントの範囲ループ内のリスナー
コードはこの例で動作します。
いずれかの段落を切り替えると、不透明度が低くなり、ストライクスルーします。 いずれかの段落にカーソルを置くと、青色に変わります。
これはどのように達成されたのですか?forループの中には、ブラウザがページをロードした後にが入ります。私は、ブラウザがこのコードをどのように解釈するかを理解しようとしています。
var someTag = document.querySelectorAll("p")
for (var i = 0; i < someTag.length; i++) {
someTag[i].addEventListener('mouseover', function() {
this.classList.add("someClass");
});
someTag[i].addEventListener('mouseout', function() {
this.classList.remove("someClass");
});
someTag[i].addEventListener('click', function() {
this.classList.toggle("done");
})
}
.done {
text-decoration: line-through;
opacity: 0.5;
}
.someClass {
color: blue;
}
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
このコードは機能していますか?あなたはフィドルを共有できますか?私が思う限り、ループが終了した後、someTagの長さの値より1大きい値になり、動作しない可能性があります。あなたがフィドルを分かち合うことができるなら、もっと明確になります – Vatsal
どういう意味ですか?コードが動作するようです。 _how_と_それがうまく動作しているか、それともうまく動作していないのか、あなたは説明を求めていますか?それともあなたが期待していない方法で動作しますか?それについての説明は、前の説明の1つに含まれる可能性が高いですが。基本的に、あなたが必要とするものをより具体的にすることができますか? – vlaz
@Vatsalありがとう私はちょうどjsfiddleを追加しました。私は、ブラウザがループを2回以上実行していることを理解していません。混乱を招いて申し訳ありません。 – StateOfB