createElement onclick函数,其中包含for循环中的变量

时间:2019-10-09 21:23:54

标签: javascript

我创建了一系列带for循环的元素(逐行)。一行中的两个元素应具有onclick功能。 onclick函数用于打开和关闭id上方一行中的div框(从for循环中,简单地讲id = var i)。通过onclick函数,我在for循环中传递了div ID。 onclick函数有效,但是每次单击仅在最后一行的div上每次打开。 foor循环是必要的。

简单的代码示例:它只是大代码的一部分。生成的元素行仅占创建的文档总数的一部分。

var a = {
x: [
["manya", "thinksa", "againa"],
["manyb", "thinksb", "againb"],
["manyc", "thinksc", "againc"]
]
};

function myfunction(id) {
document.getElementById(id).style.display = "block";
}

for (var i = 0; i < a["x"].length; i++) {
// ... many more code ...
var newDiv = document.createElement("div");
var newDivid = "div" + i;
newDiv.setAttribute("id", newDivid);
newDiv.style.display = "none";
// createTextNode = a["x"][i][0];
// ... many more code ...
var newSpan = document.createElement("span");
var newSpanid = "span" + i;
newSpan.setAttribute("id", newSpanid);
newSpan.onclick = function(){myfunction(newDivid)};
// createTextNode = a["x"][i][1];
// ... many more code ...
}

我已经测试了更多代码,这些代码是我在互联网上发现的,但都无法正常工作。其中之一只有在第二次单击后才会给出错误。

newSpan.onclick = (function(x){return function(){myfunction(x)})(newDivid);
newSpan.onclick = new Function('myfunction(' + newDivid + ')');

请仅使用纯JavaScript解决方案。

0 个答案:

没有答案