+ -
当前位置:首页 → 问答吧 → 关于两个函数的区别

关于两个函数的区别

时间:2011-10-03

来源:互联网

用了jquery

html:
HTML code

<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
JScript code

$(document).ready(function(){

    showHistory = function(flag){
        $(this).addClass ("on").siblings().removeClass("on"); /* 报错a.parentNode is undefined */
    };
});


报错a.parentNode is undefined 但是我并没有在li中使用<a> 

于是换了一种写法
把onclick去掉 js换成如下:
JScript code

$('ul li').click(function(){
        $(this).addClass("on").siblings().removeClass("on"); 
});


这样就OK了。

请问两者有什么区别?为啥第一种报错而第二种却成功运行?

作者: nindeping   发布时间: 2011-10-03

定义时this并不是指运行时的li

HTML code

<li class="on" onclick="showHistory(this, 0)">xxx</li>
<script>
$(document).ready(function(){
    showHistory = function(obj, flag){
        $(obj).addClass("on").siblings().removeClass("on");
    };
});
</script>

作者: hookee   发布时间: 2011-10-03

this变量已发生变化。。。

作者: BLUE_LG   发布时间: 2011-10-03