关于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全弹出来了 展开
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全弹出来了 展开
5个回答
展开全部
<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<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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
td.setAttribute("onclick",b(td));
这句话有问题,你把b(td)加上引号试试,不加的话就直接执行了
这句话有问题,你把b(td)加上引号试试,不加的话就直接执行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
td.onclick=function(){b(td));}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在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) //就是这句
}
}
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) //就是这句
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去掉第一行的
onload=a;
onload=a;
更多追问追答
追问
没有这个,a方法就不自动执行了
追答
啊,看错了。
这个你只要把
td.setAttribute("onclick",b(td));
改成
td.setAttribute("onclick","b(this)");
就行了。加个双引号,td变成this
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询