2014-02-11 46 views
0

我想在单击时向#tabs_ul中的每个li添加一个类,但它不起作用。 我试着看看是否有alert()它会起作用,而且确实如此。为什么它不这样做? 我竭力要摆脱这种问题alert()工作,而elem.classList.add()不会在li元素上添加类

<script> 
function clickme(){ 
var elem = document.getElementById('tabs_ul').querySelectorAll('li'); 
for(var f = 0; f < elem.length; f++){ 
elem[f].addEventListener('click', changeclass); 
}}; 

function changeclass(){ 
alert('cliccato'); // This is shown 
elem.classList.add('active_tab'); // This doesn't work 
}; 

addEventListener('load', clickme); 
</script> 

这里体内的代码

<div id="tabs"> 
<ul id="tabs_ul"> 
<li class=""><a href="#tabs-1"><strong>Description</strong></a></li> 
<li class=""><a href="#tabs-2"><strong>Gallery</strong></a></li> 
</ul> 
<div id="tabs-1"> 
</div> 
</div> 

回答

2

elemchangeclass

范围尚未确定您可以使用event.target的相反:

function changeclass(evt){ 
    evt.target.classList.add('active_tab'); 
}; 

或者,您可以将该元素绑定到该函数:

for(var f = 0; f < elem.length; f++){ 
    elem[f].addEventListener('click', changeclass.bind(elem[f])); 
}}; 

function changeclass(){ 
    this.classList.add('active_tab'); 
};