1

この問題について、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();
}
4

2 に答える 2