我的javascript for循环不起作用

时间:2012-09-12 13:22:00

标签: javascript arrays for-loop

我有以下代码:

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次)。还没有设置属性数据转换。但当我取代&#34;我&#34; inside transitionsSettingsClass [i] with transitionsSettingsClass [0]我的第一个元素发生了变化,它正在工作。该脚本应该改变6个元素中的属性数据转换。

4 个答案:

答案 0 :(得分:9)

删除

末尾的;
for (i=0; i < transitionsSettingsClassLenght; i++);   

此处的for仅在;之前命令代码,这是什么。

我建议您使用最常用的javascript样式as explicited by Google,因为它有助于避免此类错误。

答案 1 :(得分:0)

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

 $('.transitionsSettings').each(function(index) {
        $(this).setAttribute("data-transition",transitionsSettings);
    });

答案 2 :(得分:0)

正如旁注:


在所有现代浏览器中,您可以通过调用

来设置data-属性
node.dataset.transition = transitionsSettings;

答案 3 :(得分:0)

以下代码解释如下:

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

第一行:for (i=0; i < transitionsSettingsClassLenght; i++);
执行6次,因为Javascript认为它是单个语句。然后它遇到了

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

作为一个块执行一次。从for循环的末尾删除;将解决问题。