2016-06-21 79 views
0

我有button元素的列表,我想在每個單擊時添加一個類,並從所有其他按鈕中刪除類。我如何在純Javascript中做到這一點?將類添加到JavaScript中的nodeList上點擊的按鈕

<button>btn1</button> 
<button>btn2</button> 
<button>btn3</button> 
<button>btn4</button> 
<button>btn5</button> 
var el = document.querySelectorAll("button"); 

el.addEventListener("click", function() { 
    el.classList.remove("toggle"); 
    this.classList.add("toggle"); 
}); 
+0

作爲你的狀態,'querySelectorAll'返回一個節點列表,讓你通過它返回的所有節點都需要循環。 –

回答

1

通過按鈕列表兩次去。第一次添加事件監聽器每個按鈕。第二次點擊時按鈕

var btns = document.querySelectorAll("button"); 
 
var cN = "toggle"; 
 

 
function change(el, cN) { 
 
    [].forEach.call(btns, function(btn) { 
 
    if (btn.className === cN) { 
 
     btn.classList.remove(cN); 
 
    } 
 
    }); 
 
    el.classList.add(cN); 
 
} 
 

 
[].forEach.call(btns, function(btn) { 
 
    btn.addEventListener("click", function() { 
 
    change(this, cN); 
 
    }); 
 
});
button { 
 
    outline: none; 
 
} 
 
.toggle { 
 
    color: orange; 
 
}
<div> 
 
    <button>btn1</button> 
 
    <button>btn2</button> 
 
    <button>btn3</button> 
 
    <button>btn4</button> 
 
    <button>btn5</button> 
 
</div>