我需要将一个局部变量值传递给一个函数。
我的代码只能在它没有被用作另一个函数的参数时警告本地var。
当我尝试传递价值。
这是我的代码,它来自'test.js'文件:
function test()
{
var divs = document.getElementsByClassName('post');
for (var i = 0; i < divs.length; i++) {
if (divs[i].id != null) {
var element = document.createElement("div");
var currentId = divs[i].id;
element.className = 'myclass';
//alert(currentId); <-- Correct value
element.addEventListener("click", function(){
alert(currentId);// <-- Value == null ?!
}, false);
divs[i].appendChild(element);
}
}
}
此代码来自清单:
"content_scripts": [
{
...
"js": ["test.js"]
}
如果我直接使用divs [i] .id,而不是currentId var,Chrome控制台会报告:
未捕获的TypeError:无法读取未定义的属性“id”
(匿名函数)
答案 0 :(得分:2)
&#34;关闭循环内部&#34;问题(见我对原帖的评论)
试试这个
function test()
{
var divs = document.getElementsByClassName('post');
for (var i = 0; i < divs.length; i++) {
if (divs[i].id != null) {
var element = document.createElement("div");
var currentId = divs[i].id;
element.className = 'myclass';
//alert(currentId); <-- Correct value
element.addEventListener("click", functionFactory(currentId), false);
divs[i].appendChild(element);
}
}
}
function functionFactory(_localId) {
return function(){
alert(_localId);
}
}
答案 1 :(得分:1)
您可以在事件侦听器中动态获取id。
element.addEventListener("click", function(e){
alert(e.target.parentNode.id);
}, false);