この問題について、stackoverflow を含め、インターネットを広範囲に閲覧しました。私の問題は、「li」のセットがあり、ctrl + クリック ジェスチャを使用するときに複数の「li」を配列に追加することです。(e) が定義されていません。私はこれを見つけました: keydown イベントなしで CTRL および SHIFT キーを検出しますか?
しかし、提供された答えは、多くの人にとってうまくいったようですが、私にはうまくいきません。これを使用すると、スクリプト内の唯一の項目であっても、コンソールで firebug が応答しなくなりますが、「 ReferenceError: e が定義されていません」というメッセージが表示されます。私はFirefoxを使用しています。
私の最大の問題は、これを関数に追加することです。イベントとして起動する関数は、ctrl + クリックと通常のクリックを区別できます。
私を助けるための専門知識はありますか?バニラ Javascript を推奨。
この演習のポイントはクリックで LI を削除することですが、ctrl を押しっぱなしにすると複数まとめて削除したいです。おそらく、それらを配列に格納することによって。編集:いくつかのコード
<ul id = "ulItem">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
<script>
window.onload = function(){
var ulItem = document.getElementById("ulItem"); //gets UL with the "ulItem" ID.
var ulList = ulItem.getElementsByTagName("li"); //gets ulItem's "li" in an array.
///prepareLI function.///
var prepareLi = function(){
for(i = 0; i < ulList.length; i++){
ulList[i].addEventListener('click', elementClick);
}
}
//adds the same event listener to each of the "li" inside "UlList" array. Each activated by a click.
///elementClick function.///
var elementClick = function(){
ulItem.removeChild(this);
} //if this is a child of parent, UlList, remove it.
prepareLi();
}