用了jqueryhtml:<ul>
<li class="on" onclick="showHistory(0)">xxx</li>
<li onclick="showHistory(1)">xxx</li>
<li onclick="showHistory(2)">xxx</li>
<li onclick="showHistory(3)">xxx</li>
</ul>
js$(document).ready(function(){ showHistory = function(flag){
$(this).addClass ("on").siblings().removeClass("on"); /* 报错a.parentNode is undefined */
};
});报错a.parentNode is undefined 但是我并没有在li中使用<a> 于是换了一种写法
把onclick去掉 js换成如下:$('ul li').click(function(){
$(this).addClass("on").siblings().removeClass("on");
});这样就OK了。请问两者有什么区别?为啥第一种报错而第二种却成功运行?
<li class="on" onclick="showHistory(0)">xxx</li>
<li onclick="showHistory(1)">xxx</li>
<li onclick="showHistory(2)">xxx</li>
<li onclick="showHistory(3)">xxx</li>
</ul>
js$(document).ready(function(){ showHistory = function(flag){
$(this).addClass ("on").siblings().removeClass("on"); /* 报错a.parentNode is undefined */
};
});报错a.parentNode is undefined 但是我并没有在li中使用<a> 于是换了一种写法
把onclick去掉 js换成如下:$('ul li').click(function(){
$(this).addClass("on").siblings().removeClass("on");
});这样就OK了。请问两者有什么区别?为啥第一种报错而第二种却成功运行?
<li class="on" onclick="showHistory(this, 0)">xxx</li>
<script>
$(document).ready(function(){
showHistory = function(obj, flag){
$(obj).addClass("on").siblings().removeClass("on");
};
});
</script>
就第一种函数的形式 难道非要在参数里明确传递this吗
不用 实参的话, 就用 闭包在定义时就把参数实例化,显然用实参更简单.
<script>
$(document).ready(function() {
$('ul li').click(function(){
showHistory(0, this);
}); showHistory = function(flag, that){
$(that).addClass ("on").siblings().removeClass("on");
};
});</script>
没有加var 应该是全局作用域