2016-11-22 12 views
1

クラスを動的に変更し、その末尾にカウンタを追加したいと考えています。私はこのコードを書いたが、文字列のように扱われる。javascriptでクラス名を動的に置き換える方法

これはコードです:

var divClass = document.getElementById('div2'); 
var i = 1; 
setInterval(function() { 
    divClass.className=divClass.className.replace('color','color'+ i); 
    i++; 
},5000); 

私はこの問題を解決することができますか?代わりに

+0

1)文字列として扱われるものは何ですか? 2)あなたのクラス名をどのように見せたいのですか? – EvSunWoodard

答えて

1

私は問題が最初のループの後にクラス名がcolor1になり、それが前の

divClass.className = 'color'+ i; 
が上書きされますので、あなたはあなただけのクラス名を設定することができ color12で終わるので、あなたが唯一の「色」の部分を交換することだと思います

あなたがそれらを上書きしないように、あなたが最初にそれらとそれらを格納することができます前に、クラスを持っていた場合:var classes = divClass.className; と、あなたは彼らにdivClass.className = classes + ', color'+ i;

+0

ありがとうございました。それは完全に動作します – user4876127

0

用途:

element.className = 'other const clases' + 'color'+ i; 

あなたはクラスの完全な文字列を変更したり、例えば正規表現と2つの段階でそれを変更し、再度それを割り当てる必要があります。

1

を設定するときは、THIのようなJavaScriptであるclassList機能を使用することができますs:

var divClass = document.getElementById('div2'); 
var i = 1; 
setInterval(function() { 
    divClass.classList.remove('color' + (i - 1)); 
    divClass.classList.add('color' + i++); 
}, 5000); 

文字列で連結しているため、数字は文字列として扱われる可能性が高くなります。括弧内に項目を配置すると、それらは数字として実行されます(かっこ内のものが最初に実行されるため)。次に文字列として連結されます。

+0

これはクロムでうまく動作しません! – MizAkita