循环遍历 3 个元素时的无限循环.怎么了
Infinite loop when looping through 3 elements. Whats wrong?
我试图创建一些"插件",如Facebook喜欢按钮。但是,我的循环只渲染第一个div,而不是其他div。 为什么?
JSFiddle
<style>body{background: #ccc;}</style>
<div name="q" data-id="3" data-width="200"></div>
<div name="q" data-id="1" data-width="300"></div>
<div name="q" data-id="1" data-width="400"></div>
<script>
var s = document.getElementsByName("q");
for (var i = 0; i < s.length; i++) {
e = s[i];
w = e.attributes['data-width'].value;
i = e.attributes['data-id'].value;
var o={};
o.iframe = document.createElement('iframe');
o.iframe.setAttribute('src', 'http://resources2.news.com.au/images/2012/09/27/1226482/758034-tardar-sauce-the-cat.jpg');
o.iframe.width = w;
o.iframe.height = w + 100;
o.iframe.border = 0;
o.iframe.setAttribute('style', 'border: 0;overflow: visible;');
e.appendChild(o.iframe);
console.log('id:'+i+' width:'+w);
}
</script>
您将变量i
用作循环计数器和循环内部。
在第一次迭代中,将值"3"
分配给变量 i
。在 for
语句中进行比较时,这将转换为数字3
,并且由于该长度大于数组的长度,因此循环在第一次迭代后结束。
对在循环中保存数据 ID 的变量使用不同的变量名称。
<小时 />编辑:
iframe大小的问题在这里:
o.iframe.height = w + 100;
变量 w
包含一个字符串,例如 "200"
,当 +
运算符的任何操作数是字符串时,它将执行字符串连接。所以结果不是300
而是"200100"
.您的 iframe 有几千像素高。
您需要在计算中使用数字:
o.iframe.height = parseInt(w) + 100;
i
正在循环中修改。在循环中更改此声明的名称:
newNameForVar = e.attributes['data-id'].value;
相关文章:
- addData()从最新图表中删除.js 2.1.3-怎么了
- 使用滚动溢出-x进行无限循环
- 从index.html调用函数,该函数无限循环
- 使用jQuery无限循环播放HTML页面幻灯片
- Grunt任务没有加载,获得无限循环
- 如何在不进入无限循环的情况下将网站重定向到Facebook画布URL
- Backbone+RequireJS+Mediator模式导致视图逻辑短路和无限循环
- jQuery无限循环,动画化许多项目
- 角度编译指令似乎进入了无限循环
- 对于循环错误:未捕获的引用错误,未定义变量.怎么了
- 循环遍历 3 个元素时的无限循环.怎么了
- 欧拉挑战3 Javascript:解决方案给出正确答案 但随后我陷入了无限循环
- 两个同步事件创建了一个无限循环
- 在UI路由器中调用子状态时触发了无限循环
- 无限循环,虽然我放了个断点
- 我的do while循环陷入了无限循环
- addEventListener创建了一个无限循环
- 为什么这段代码创建了一个无限循环?
- Javascript - While循环变成了无限循环
- 无限循环-Javascript-怎么了