获取用于动态加载的整数变量的值
Get value of integer variable for dynamic loading
我正在尝试动态创建元素并向它们添加事件侦听器。下面是一些代码:
var marks = {
list:[{
selected: "content",
url: "http://youtube.com/feed/subscriptions",
trait: "id"
},{
selected: "js-streams streams items",
url: "http://twitch.tv/directory/following",
trait: "class"
}]
};
var l = marks.list.length;
var web = "<webview src='https://youtube.com/feed/subscriptions' preload='preload.js' disablewebsecurity></webview>";
for(var i = 0; i < l; i++){
var webadd = "<webview id=web" + i + " src=" + marks.list[i].url + " preload='preload.js' disablewebsecurity></webview>";
$('#canvas1').append(webadd);
document.getElementById("web" + (i)).addEventListener("dom-ready", function() {
console.log("nice" + (i)); // <-- This line most likely needs changing
});
}
现在,我可以在每个元素上获取我的元素和事件侦听器,但是当涉及到控制台日志时,它会打印出两次"nice2"
。有没有办法让这条线将var i
的值作为整数而不是i
本身?理想情况下,我希望它打印出nice0
和nice1
。有什么想法吗?谢谢。
你最好使用 forEach 循环。这样,您可以有一个闭包并保持上下文。也读起来更好。
mark.list.forEach(function(item, i){
var webadd = "<webview id=web" + i + " src=" + item.url + " preload='preload.js' disablewebsecurity></webview>";
$('#canvas1').append(webadd);
document.getElementById("web" + i).addEventListener("dom-ready", function() {
console.log("nice" + i); // <--
});
})
您需要一个额外的函数来创建事件侦听器并将当前i
绑定到它:
document.getElementById("web" + (i)).addEventListener("dom-ready", (function(n) {
return function() {
console.log("nice" + (n));
}
})(i));
相关文章:
- 限制javascript变量的最小/最大整数
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 为什么可以对整数变量调用toString(),而不能对文字数字调用
- 将angular变量{{$index+1}}转换为javascript整数
- 将整数变量插入数据库
- 如何分离javaScript变量's整数和它's decimal以分别设置样式
- 如何传递一个整数来创建新的变量名
- 获取用于动态加载的整数变量的值
- 在 .click 上更改变量整数与 .load 耦合
- 为什么当我使用变量而不是整数或字符串时初始化日期对象失败
- Angularjs:即使在我将变量解析为整数之后,也会添加整数
- 登录以使用 jquery 滚动函数将整数变量从最小值增加到最大值
- 连接保存整数的变量
- 如何将整数变量从PHP传递到Javascript Google Chart API
- 如何在javascript中将整数变量转换为字符串
- 将HTTP请求中的所有变量视为整数(例外)
- 为什么JavaScript会将整数变量强制转换为字符串变量
- 如何将一个整数值传递给PHP整数变量中的JS
- 将JavaScript变量值分配给JSP整数变量
- 添加两个整数变量