私はJavascriptの初心者です。
私はを介してWebページを初期化しています。window.onload
クラス名(slide
)で要素の束を見つけ、いくつかのロジックに基づいてそれらを異なるノードに再配布する必要があります。Distribute(element)
要素を入力として受け取り、配布を行う関数があります。私はこのようなことをしたいです(例えばここまたはここで概説されているように):
var slides = getElementsByClassName("slide");
for(var i = 0; i < slides.length; i++)
{
Distribute(slides[i]);
}
ただし、getElementsByClassName
実際には配列を返さないため、これは私にとって魔法ではありませんが、、NodeList
つまり
...これは私の推測です...
...関数内で変更されていますDistribute
(DOMツリーがこの関数内で変更されており、特定のノードの複製が行われます)。For-each
ループ構造も役に立ちません。
可変スライドは実際には決定論的ではなく、反復ごとに長さと要素の順序が大きく変化します。
私の場合、NodeListを反復処理する正しい方法は何ですか?一時的な配列を埋めることを考えていましたが、その方法がわかりません...
編集:
私が言及するのを忘れていた重要な事実は、別のスライドの中に1つのスライドがあるかもしれないということです。これはslides
、ユーザーAlohciのおかげで見つけたばかりの変数を変更するものです。
私の解決策は、最初に各要素を配列に複製し、Distribute()
その後配列をono-by-oneに渡すことでした。
Distribute()
関数はここにコピーされるように長くて複雑なことですが、私はDOM構造の内部を変更することだと確信して、私はまた、そこに要素を(クローニング)複製しています。デバッグすると、slides
内部に渡されるたびに変数が変化することがわかります。
getElementsByClassName()
がlive を返すと信じているnodeList
ので、そのクラスの要素がnodeList
変更を繰り返しているオーバーの長さに追加されます。