3

私が持っているコードは少し長くなっています、私はそれを単純化する方法があると思います、それを見てください:

var slidernav = document.getElementsByTagName('li');
slidernavinital = 20;
slidernavadd = 30;
slidernav[0].style.top = slidernavinital + slidernavadd*0 + 'px';
slidernav[1].style.top = slidernavinital + slidernavadd*1 + 'px';
slidernav[2].style.top = slidernavinital + slidernavadd*2 + 'px';
slidernav[3].style.top = slidernavinital + slidernavadd*3 + 'px';
slidernav[4].style.top = slidernavinital + slidernavadd*4 + 'px';
slidernav[5].style.top = slidernavinital + slidernavadd*5 + 'px';
slidernav[6].style.top = slidernavinital + slidernavadd*6 + 'px';
slidernav[7].style.top = slidernavinital + slidernavadd*7 + 'px';
slidernav[8].style.top = slidernavinital + slidernavadd*8 + 'px';
slidernav[9].style.top = slidernavinital + slidernavadd*9 + 'px';
slidernav[10].style.top = slidernavinital + slidernavadd*10 + 'px';
slidernav[11].style.top = slidernavinital + slidernavadd*11 + 'px';

このようなことをすることはできません:

document.getElementsByTagName('li')[x].style.top = 20 + 30*x + 'px';

よろしくお願いします!

4

3 に答える 3

5

はい。forループで包みます。

for(var i = 0; i < sliderNav.length; i++) {
    sliderNav[i].style.top = sliderNavInitial + sliderNavAdd*i + "px";
}

ただし、ループについて知らなかった場合は、プログラミング入門の本を読む必要があると思います(繰り返しの処理を行わない場合、コンピューターのポイントは何ですか?)

編集:ちなみに、ループは次のループ構造forの省略形です。while

var i = 0;
while(i < sliderNav.length) {
    sliderNav[i].style.top = sliderNavInitial + sliderNavAdd*i + "px";
    i++;
}

すべての「簿記」をループの最初の行に配置するだけなので、ループする回数をより簡単に予測できます。(whileループは、条件が満たされるまでループし、その後停止するため、パーツを含めるのを忘れた場合、停止するi++;ことはありません。)

于 2012-04-25T20:57:28.483 に答える
1

ループを使用して要素を循環します。

var slidernav = document.getElementsByTagName('li');
slidernavinital = 20;
slidernavadd = 30;
for (var n = 0; n<slidernav.length; n++) {
    slidernav[n].style.top = slidernavinital + slidernavadd*n + 'px';
}
于 2012-04-25T20:59:22.167 に答える
0

あなたはのために使うことができます

このような

var ln = slidernav.length;
for(var i = 1;i<=ln;i++)
{
    slidernav[i].style.top = slidernavinital + slidernavadd*i + 'px';
}

それは非常に単純なプログラミング構造です。

于 2012-04-25T20:59:16.483 に答える