ユーザーがdivをクリックして選択および選択解除できる関数を作成しました。さて、私がやろうとしていたのは、一度aを押すとすべての選択を解除する関数でしたが、それは私のdivの一部しか選択解除しませんでした。コードは次のとおりです。
var divs = document.getElementsByClassName('fuori');
for(i = 0, j = divs.length; i < j; i++){
divs[i].addEventListener('click', function(){
if(!hasClass(this, 'selected')){
this.className = this.className + " selected";
} else {
removeClass(this, 'selected');
}
});
}
removeClass関数はこれです
function removeClass(ele,cls) {
if (hasClass(ele,cls)) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className=ele.className.replace(reg,' ');
}
}
これはdeselectAllです
function deselectAll(){
var selected = document.getElementsByClassName('selected');
alert(selected.length);
for (i = 0; i < selected.length; i++){
removeClass(selected[i], 'selected');
}
}
クリックによる選択と選択解除はシームレスに機能しますが、いくつかのdivを選択してaを押すと、すべてのdivの選択が解除されるのではなく、一部のdivのみが選択解除されます。
どうすればこれを修正できますか?そして、なぜそれが機能しないのですか?
ありがとうございました!