这样肯定不行啊,后面一次 str="0002"的语句把前面的str的0001值覆盖了,当然出来的都是0001了。你用两个变量分别存放0001和0002就可以了var str1 = "0001";
var td = document.createElement("td");
td.onclick = function()
{
test(str1);
}
td.appendChild(document.createTextNode(str1));
tr.appendChild(td);
var str2 = "0002";
td = document.createElement("td");
td.onclick = function()
{
test(str2);
}
td.appendChild(document.createTextNode(str2));
tr.appendChild(td);
}
var td = document.createElement("td");
td.onclick = function()
{
test(str1);
}
td.appendChild(document.createTextNode(str1));
tr.appendChild(td);
var str2 = "0002";
td = document.createElement("td");
td.onclick = function()
{
test(str2);
}
td.appendChild(document.createTextNode(str2));
tr.appendChild(td);
}
解决方案 »
- JavaScript 的使用,帮忙看看。
- RMB求帮忙改个JS轮播图片代码的尺寸(已经在猪八戒网发布)
- 关于AJAX返回数据多大问题!急!
- 请求帮忙修改phpmyadmin中的一个函数
- IE中如何控制所有页面都在原窗体中打开
- 关于几个标签的问题
- 发点小代码玩玩
- 【新手求助】怎么抓取谷歌地图坐标数据来在网页上实现地图的功能呢
- 请问:ActiveX的事件在Web中用JScript如何响应?也就是怎么样给事件编写过程代码?
- 一个简单的能让程序员吐血的问题
- 点击显示一个文字块的JAVASCRIPT交互按钮怎样写
- 如何使用js实现这个excel公式:年差=days360(date1,date2)/360
str="0002"是后复制的。
function test(a)
{
alert(a);
}
function eventTest()
{ var e = document.getElementById("test"); var table = document.createElement("table");
e.appendChild(table);
var tblBody = document.createElement("tbody");
table.appendChild(tblBody);
var tr = document.createElement("tr");
tblBody.appendChild(tr);
var str = "0001";
var td = document.createElement("td");
td.onclick = function(i){return function (){test(i)}}(str);//利用闭包解决
td.appendChild(document.createTextNode(str));
tr.appendChild(td);
str = "0002";
td = document.createElement("td");
td.onclick = function(i){return function (){test(i)}}(str);
td.appendChild(document.createTextNode(str));
tr.appendChild(td);
}
window.onload = eventTest;
</script>
谢谢,确实解决了,可我还是不太理解。
能不能给我解释一下这句话啊,谢谢。td.onclick = function(i){return function (){test(i)}}(str);//利用闭包解决
http://hi.baidu.com/xiaolei1982/blog/item/a941e43fcfa147c07c1e7165.html
先给你偏文章你看看什么叫闭包,其中你就会明白你开始写的例子为什么会
被覆盖,而上面的写法就是解决这种情况的方案
谢谢,确实解决了,可我还是不太理解。
能不能给我解释一下这句话啊,谢谢。 td.onclick = function(i){return function (){test(i)}}(str);//利用闭包解决 --------
js中的匿名函数就是用来解决这个问题的
当然还可以这样
td.onclick = function(){return text(str)};
!sorry
this:
td.onclick = function(){return test(str)};
解决了我的一个大难题,也是我对闭包有所了解。