0

私は一日中検索しましたが、私の問題に対する答えを見つけることができません。

次のDIVセットアップがあります。

<div id="MainDiv1">
    <div id="Galery1">
        <div id="Image" style="width:100px;"></div>
        <div id="Image" style="width:100px;"></div>
        <div id="Image" style="width:100px;"></div>
    </div>
</div>
<div id="MainDiv2">
    <div id="Galery2">
        <div id="Image" style="width:80px;"></div>
        <div id="Image" style="width:80px;"></div>
        <div id="Image" style="width:80px;"></div>
    </div>
</div>

私が必要としているのは、Javascriptを使用して、「Image」DIVのいずれかの幅で変数を設定することですが、「Galery1」にあるものだけです。それらはすべて同じ幅を持っているので、それらのどれでも機能します。

私は試しました:

DIVwidth = document.getElementById("Image");

しかし、これは常に「Galery2」DIVからの80pxを返します。検索を「Galery1」または「MainDiv1」のDIVに制限するために、なんらかの方法でパスを指定する必要があると思います。

DIVに一意の名前を付けることはできません。

助言がありますか?

4

2 に答える 2

1

IDは一意である必要があります。IEあなたは1つ以上持つべきではありませんid="Image"

で最初のdivを選択するには、次のようにしますGallery2

document.getElementById( 'Gallery2' ).getElementsByTagName( 'div' )[0]; // <-- '0' gets first item from array
于 2013-01-03T19:46:20.780 に答える
1

何よりもまず、IDとクラスの違いを理解するのに役立ちます:http://css-tricks.com/the-difference-between-id-and-class/

そのことを念頭に置いて、すべての画像IDの要素を画像クラスの要素に変更する必要があります。

<div id="MainDiv1">
    <div id="Galery1">
        <div class="Image" style="width:100px;"></div>
        <div class="Image" style="width:100px;"></div>
        <div class="Image" style="width:100px;"></div>
    </div>
</div>
<div id="MainDiv2">
    <div id="Galery2">
        <div class="Image" style="width:80px;"></div>
        <div class="Image" style="width:80px;"></div>
        <div class="Image" style="width:80px;"></div>
    </div>
</div>

ギャラリー1から画像を選択すると、次のようになります。

document.getElementById("Galery1").getElementsByClassName('Image')[0]

document.getElementById("Galery1").getElementsByClassName('Image')一致する要素の配列(IDが「Galery1」の要素の下にネストされた「Image」のクラスを持つ要素)を[0]返し、返された配列の最初のインデックスを選択します。


または、次の手順でページの最初の画像を選択することもできます。document.getElementsByClassName('Image')

于 2013-01-03T20:00:09.297 に答える