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[i]内の"i"をtransitionsSettingsClass[0]に置き換えると、最初の要素が変更され、機能します。このスクリプトは、6つの要素の属性データ遷移を変更することになっています。

4

4 に答える 4

9

;の最後にあるを削除します

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

ここforでは、の前のコードのみをコマンドします;。それは何もありません。

この種のエラーを回避するのに役立つため、Googleによって明示されているように、最も頻繁なjavascriptスタイルを使用することをお勧めします。

于 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++);
Javascriptが単一のステートメントと見なすため、6回実行されます。次に、ブロックとして一度実行されるものに遭遇します。forループの最後からを削除すると、問題が解決します。

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

;

于 2012-09-12T13:45:56.603 に答える