关于js添加onclick事件

<scriptlanguage="javascript">onload=a;functiona(){vartds=document.getElementsByTagNam... <script language="javascript">
onload=a;
function a(){
var tds = document.getElementsByTagName("TD");
for(var i=0;i<tds.length;i++){
var td = tds[i];
td.setAttribute("onclick",b(td));
}
}
function b(td){
var id = td.innerText;
alert(id);
}
</script>
请问该怎么修改,这个一运行,onclick事件都不用触发,alert全弹出来了
展开
 我来答
myrealword
2013-01-08 · TA获得超过306个赞
知道小有建树答主
回答量:227
采纳率:100%
帮助的人:170万
展开全部
<script language="javascript">
onload=a;
function a(){
var tds = document.getElementsByTagName("TD");
for(var i=0;i<tds.length;i++){
var td = tds[i];
td.setAttribute("onclick",function(){b(td)});
}
}
function b(td){
var id = td.innerText;
alert(id);
}
</script>

<script language="javascript">
onload=a;
function a(){
var tds = document.getElementsByTagName("TD");
for(var i=0;i<tds.length;i++){
var td = tds[i];
td.onclick=function(){b(td));}
}
}
function b(td){
var id = td.innerText;
alert(id);
}
</script>
诶呀,我也没测试。对dom绑事件好像有两种吧,另一个是addEventListener,为了兼容两种都要写的。这个兼容代码很多,楼主自己去找吧。我现在用jquery都用废了。
追问
我试了,取值有问题,他触发事件,值取到了最后一个
追答
因为闭包的原因。这里我也有些混淆。不好意思。

onload=a;
function a(){
var tds = document.getElementsByTagName("TD");
for(var i=0;i


onload=a;
function a(){
var tds = document.getElementsByTagName("TD");
for(var i=0;i

惭愧了,这些我都没测试。我的狐火挂了,就指狐火活着呢。参考资料里是这方面的东西。每次我都是看着懂、转头就忘。更别提给别人讲这个东东了。你自己研究吧,很有意思。

参考资料: http://blog.csdn.net/nx8823520/article/details/6858126

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
846564997
2013-01-08 · TA获得超过661个赞
知道小有建树答主
回答量:366
采纳率:0%
帮助的人:115万
展开全部
td.setAttribute("onclick",b(td));

这句话有问题,你把b(td)加上引号试试,不加的话就直接执行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5ec5394
2013-01-08 · TA获得超过119个赞
知道答主
回答量:175
采纳率:0%
帮助的人:92.8万
展开全部
td.onclick=function(){b(td));}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
molaifeng
2013-01-08 · TA获得超过5273个赞
知道大有可为答主
回答量:1629
采纳率:50%
帮助的人:1794万
展开全部
在a方法里加一句
function a(){
var tds = document.getElementsByTagName("TD");
for(var i=0;i<tds.length;i++){
var td = tds[i];
td.setAttribute("onclick",b(td));
b(td) //就是这句

}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不二进制
2013-01-08 · TA获得超过749个赞
知道小有建树答主
回答量:441
采纳率:50%
帮助的人:322万
展开全部
去掉第一行的
onload=a;
更多追问追答
追问
没有这个,a方法就不自动执行了
追答
啊,看错了。

这个你只要把
td.setAttribute("onclick",b(td));

改成
td.setAttribute("onclick","b(this)");

就行了。加个双引号,td变成this
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式