使用javascript进行onclick finction [英] Onclick finction using javascript
问题描述
大家好我在javascript中有这个代码
for(var i = 0,link; i< 5; i ++){
var div = document.createElement(div);
var link = document.createElement(a);
link.innerHTML =Link+ i;
link.onclick = function(){
alert(i);
};
div .appendChild(link);
document.body.appendChild(div);
}
问题
当你点击链接时,警告框总是说5.你会在javascript中修改什么来解决这个问题?
Hi all I have this code in javascript
for (var i = 0, link; i < 5; i++) {
var div = document.createElement("div");
var link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(i);
};
div.appendChild(link);
document.body.appendChild(div);
}
Problem
When you click on the links, the alert box always says 5. What would you change in the javascript to fix this?
推荐答案
循环内部的JavaScript闭包 - 简单的实际示例 - Stack Overflow [ ^ ]
JavaScript closure inside loops – simple practical example - Stack Overflow[^]
function createlink(i) {
var link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(i);
};
return link;
}
for (var i = 0, link; i < 5; i++) {
var div = document.createElement("div");
var link = createlink(i);
div.appendChild(link);
document.body.appendChild(div);
}
它始终为5的原因是因为你的循环将i递增到5并且你警告同一个变量。
你说,
The reason it is always 5 is because your loop increments i to 5 and you alert that same variable.
You said,
我不想使用link.onclick = function(event) {alert(event.target.innerHTML); };
I don't want to use link.onclick = function (event) { alert(event.target.innerHTML); };
为什么不呢?这些方面的东西是正确的方法。
Why not? Something along those lines is the correct way to do it.
试试这个
try this
for (var i = 0, link; i < 5; i++) {
var div = document.createElement("div");
var link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(this.innerText.split(' ')[1]);
};
div.appendChild(link);
document.body.appendChild(div);
}
这篇关于使用javascript进行onclick finction的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!