gpt4 book ai didi

javascript - 循环遍历 3 个元素时无限循环。怎么了?

转载 作者:行者123 更新时间:2023-11-30 12:55:46 25 4
gpt4 key购买 nike

我正在尝试创建一些“插件”,例如 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,并且由于它大于数组的长度,因此循环在第一次迭代后结束。

为在循环中保存 data-id 的变量使用不同的变量名。


编辑:

iframe 大小的问题出在这里:

o.iframe.height = w + 100;

变量w包含一个字符串,例如"200",当+运算符的任意一个操作数为字符串时,它将进行字符串连接。所以结果不是 300 而是 "200100"。您的 iframe 有数千像素高。

您需要在计算中使用数字:

o.iframe.height = parseInt(w) + 100;

关于javascript - 循环遍历 3 个元素时无限循环。怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com