2

現在のクラス (現在の配列値) を削除し、次のクラス (次の配列値) を追加します。

本質的には、これです。

    var myFunction= function (step) {
        if (lastEntered === step) {
            triggerEvent(step, "impress:stepleave");
            lastEntered = null;
 // Adding in an array of gradients 
var i;
var bg = new Aray();
bg[0] = "gradient-0";       
bg[1] = "gradient-1";       
bg[2] = "gradient-2";               
bg[3] = "gradient-3";       
bg[4] = "gradient-4";       
bg[5] = "gradient-5";                   
bg[6] = "gradient-6";       
bg[7] = "gradient-7";       
bg[8] = "gradient-8";                   

            for (i=0;i<bg.length;i++)
            {
            body.classList.add(bg[i]);
            }
        }
    };

body.classList.add ("勾配-1"); 配置すると、スクリプトの残りの部分を中断することなく、一度だけ色が変更されました。

ありがとう!

4

1 に答える 1

0

まず、配列を定義するためのより良い方法は次のとおりです。

var bg = ["gradient-0", "gradient-1", "gradient-0", you get the idea...];

正確に何をしようとしていますか?
コードは、yourFunction が呼び出されるたびに、9 つの classNames すべてを body に追加します。
classList の remove メソッドを使用して、className を削除できます。
className body が持つべきステップの値に依存しますか?
次のようなことができます。

body.className = bg[step];

これにより、body のすべての classNames が削除され、className bg[step]; が付けられます。

または、body の classNames が bg のものとは異なる場合は、次のようにすることができます。

var i = 0, len = bg.length;
for ( ; i<len; i++) {
  if (i === step) { body.classList.add(bg[i]);
  } else {
    if (body.classList.contains(bg[i]) { body.classList.remove(bg[i]); }
  }
}

お役に立てば幸いですが、ステップとは何か、関数が何をすべきかはよくわかりません;}

于 2012-08-16T22:17:52.743 に答える