javascript中this的问题

html:<lionclick="clist()">menu</li>js:functionclist(){this.style.background="red";}为什... html:
<li onclick="clist()">menu</li>

js:
function clist(){
this.style.background="red";
}

为什么我这样不能实现单击菜单背景变色呢?
而改成这样就没问题:

html:
<li onclick="clist(this)">menu</li>

js:
function clist(obj){
obj.style.background="red";
}
展开
 我来答
Jseven_jy
2010-06-25 · TA获得超过8122个赞
知道大有可为答主
回答量:2499
采纳率:100%
帮助的人:1143万
展开全部
JavaScript 不像java一样把调用函数的对象作为隐式参数传过去的。。
必须自己传过去。。
当然你也可以这样写<li onclick="this.style.background="red";
">menu</li>
zzqkillyou
2010-06-25 · TA获得超过1091个赞
知道小有建树答主
回答量:942
采纳率:0%
帮助的人:749万
展开全部
function clist(){
this.style.background="red";
}
函数没有参数 怎么能直接调用 this 的属性呢?如果你不想写到外面,可以这样写: <li onclick=function(){this.style.background="red";
}>menu</li>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dfffffb1
2010-06-25 · TA获得超过906个赞
知道小有建树答主
回答量:260
采纳率:50%
帮助的人:100万
展开全部
在函数添加参数this,是指向函数传入该控件对象!如果直接用this点样式,显然找不到北?!不知道this代表哪个…个人理解,仅供参考!呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-06-25
展开全部
this,在javascript里是比较怪异的东西。但是了解了机制就清楚了。this和普通面向对象里的this是不一样的。因为js根本就不是面向对象,js是函数式编程。this,在javascript里实际指的是上下文,而非“类”。javascript里没有类。所以你这里只能把对象传进去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式