18

コードはありますが、<id>タグは使用できません。

では、どうやって にたどり着くことができ<span> 1 2 3 4ますか?

<div id="test">
    <span>1</span>
    <span>2</span>
    <span>3</span>
    <span>4</span>
<div>
4

7 に答える 7

33

これを試して

var div = document.getElementById("test");
var spans = div.getElementsByTagName("span");

for(i=0;i<spans.length;i++)
{
  alert(spans[i].innerHTML);
}
于 2012-08-21T09:30:07.433 に答える
11
var test = document.getElementById( 'test' );

// To get the text only, you can use "textContent"
console.log( test.textContent ); // "1 2 3 4"

textContent標準的な方法です。innerTextレガシーIEに使用するプロパティです。可能な限りクロスブラウザが必要な場合は、再帰的にを使用しますnodeValue

于 2012-08-21T09:39:05.703 に答える
7

jQuery タグがないので、純粋な JavaScript を想定しています

var spanText = document.getElementById('targetSpanId').innerText;

あなたが必要とするものです

しかし、あなたの場合:

var spans = document.getElementById('test').getElementsByTagName('span');//returns node-list of spans
for (var i=0;i<spans.length;i++)
{
    console.log(spans[i].innerText);//logs 1 for i === 0, 2 for i === 1 etc
}

ここにフィドルがあります

于 2012-08-21T09:31:42.127 に答える
2
<div id="test">
    <span>1</span>
    <span>2</span>
    <span>3</span>
    <span>4</span>
</div>
<div id="test2"></div>

<script type="text/javascript">
    var getDiv = document.getElementById('test');
    var getSpan = getDiv.getElementsByTagName('span');​​​
    var divDump = document.getElementById('test2');

    for (var i=0; i<getSpan.length; i++) {
        divDump.innerHTML = divDump.innerHTML + ' ' + getSpan[i].innerHTML;
    }
</script>

</p>

于 2012-08-21T09:32:38.757 に答える
1

純粋なJavaScriptは次のようになります

var children = document.getElementById('test').children;

jQueryを使用している場合は、次のようになります

$("#test").children()
于 2012-08-21T09:31:49.227 に答える
1

querySelectorAll を使用してすべてのスパン要素を取得し、新しい ES2015 (ES6) スプレッド演算子を使用して、querySelectorAll が返す StaticNodeList をスパンの配列に変換し、map 演算子を使用してアイテムのリストを取得できます。

以下の例を参照してください

([...document.querySelectorAll('#test span')]).map(x => console.log(x.innerHTML))
<div id="test">
    <span>1</span>
    <span>2</span>
    <span>3</span>
    <span>4</span>
<div>

于 2016-07-03T16:32:04.170 に答える