1

我有以下代码:

var transitionsSettingsClass = document.getElementsByClassName("transitionsSettings");  
var transitionsSettingsClassLenght = transitionsSettingsClass.length;  
for (i=0; i < transitionsSettingsClassLenght; i++);   
{   
    transitionsSettingsClass[i].setAttribute("data-transition",transitionsSettings);    
};  

我知道 transitionsSettingsClassLenght = 6 因为我已经用警报检查了它。但是当我在循环中放置警报时,它只显示 1 次(它应该显示 6 次)。也未设置属性数据转换。但是当我用 transitionsSettingsClass[0] 替换 transitionsSettingsClass[i] 中的“i”时,我的第一个元素发生了变化并且它正在工作。该脚本应该在 6 个元素中更改属性数据转换。

4

4 回答 4

9

去掉;末尾的

for (i=0; i < transitionsSettingsClassLenght; i++);   

这里for只命令 之前的代码;,没什么。

我建议您使用最常用的 javascript 样式,正如 Google 所明确指出的那样,因为它有助于避免此类错误。

于 2012-09-12T13:23:57.167 回答
0

您是否尝试过使用 jquery 每种方法?

 $('.transitionsSettings').each(function(index) {
        $(this).setAttribute("data-transition",transitionsSettings);
    });
于 2012-09-12T13:24:36.107 回答
0

就像旁注一样:


在所有现代浏览器中,您可以data-通过调用来设置属性

node.dataset.transition = transitionsSettings;
于 2012-09-12T13:26:58.973 回答
0

下面的代码解释如下:

for (i=0; i < transitionsSettingsClassLenght; i++);
{
transitionsSettingsClass[i].setAttribute("data-transition",transitionsSettings);
};

第一行:
for (i=0; i < transitionsSettingsClassLenght; i++);
执行 6 次,因为 Javascript 认为它是一条语句。然后它遇到哪个作为一个块执行一次。从 for 循环的末尾删除将解决问题。

{
transitionsSettingsClass[i].setAttribute("data-transition",transitionsSettings);
};

;

于 2012-09-12T13:45:56.603 回答