-2

スパンがliタグ内にあるため、タグ付きの複数のliタグがあります。それらは同じID名を持っています。特定のliタグを選択したときに、spanタグ内の値を取得できるようにしたいです。ここに私のhtmlコード

<li>
    <form action="" method="post" name="topdivform">
        <span id="editedpart" title="first div"><a href="#" title="edit" id="edit" onclick="showeditpage()">first div</a></span>
    </form>
</li>
<li>
    <form action="" method="post" name="topdivform">
        <span id="editedpart" title="second div"><a href="#" title="edit" id="edit" onclick="showeditpage()">second div</a></span>
    </form>
</li>
<li>
    <form action="" method="post" name="topdivform">
        <span id="editedpart" title="third div"><a href="#" title="edit" id="edit" onclick="showeditpage()">third div</a></span>
    </form>
</li>

そしてここに私のjavascriptがあります

var elem = document.getElementById("editedpart");
var str ="";
for(var i = 0; i< elem.length; ++i){
    str = elem[i].innerText;
    alert(str);

}

スパンタグ内のテキストを取得していません ありがとう

4

3 に答える 3

4

複数の要素に同じ ID を指定しているため、GetElementById の呼び出しによって返される要素を予測する方法はありません。複数の要素に同じ ID を与えないように、マークアップを再構築する必要があります。

于 2013-04-28T05:03:54.703 に答える
2
var elem = document.getElementsByName("topdivform");

var str ="";
for(var i = 0; i< elem.length; ++i){
    str = elem[i].textContent || elem[i].innerText;
    alert(str);
}

DOM の選択をより具体的にする必要がある場合は、 を使用できますがquerySelectorAll()、IE6/7 ではサポートされていません。

var elem = document.querySelectorAll("li > form[name=topdivform] > span > a[title=edit]");
于 2013-04-28T05:09:02.827 に答える
0

li のクリック イベントにイベント リスナー ( https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener ) を追加し、子スパン ノードからグローバル変数を選択値として設定できます。クラス名 ( <span class="isSelected"></span>) またはdata-*( <span data-selected="true"></span>) を使用して、クリック イベント中にどのスパンが「選択」されるかを示すことができます。必要に応じてその値を変更するだけなので、最初のものは便利です。2 番目の方法では、DOM を解析し、選択が変更されるたびにその属性またはクラスを置き換える必要があります。

于 2013-04-28T05:56:20.430 に答える