1

私はこのHTMLコードを持っています:

<div>
    756
    <span></span>
</div>

JavaScript を使用して、タグ内から番号 756 を取得し、それを 1 ずつ増やしたいと考えています。divタグ内から番号divを除外し<span>て番号のみを取得する最良の方法は何ですか?

4

9 に答える 9

4

これを試して:

var div = document.getElementsByTagName("div")[0],
    content = div.textContent || div.innerText;

textContentは、IE8 を除くすべてのブラウザーでサポートされており、FF4 を除くすべてのブラウザーでサポートさinnerTextれています。したがって、両方を使用すると、安定した結果が得られるはずです。

http://www.quirksmode.org/dom/w3c_html.html

どちらのプロパティも、HTML タグが削除されたテキスト コンテンツを返します。

例: http://jsfiddle.net/HnWxk/ (chrome/ff/ie7 でテスト済み)

ここで、それを増やしたい場合は、次のようにします。

content++;

Number をキャストする必要があります: http://jsfiddle.net/HnWxk/3/

于 2012-09-19T12:56:49.860 に答える
1

そのために使用できます.innerText

var div = document.getElementsByTagName("div")[0];

var inner;
if(div.innerText) {
   inner = div.innerText;
} else {
   inner = div.textContent;
}

var number = parseInt(inner);
number++;
alert(number);

フィドル

于 2012-09-19T12:52:47.683 に答える
1
<div id="mydiv">
    756
    <span></span>
</div>

<script>
  var textNode = document.getElementById("mydiv").childNodes[0];
  var number = parseInt(textNode.nodeValue);
  textNode.nodeValue= number + 1;
</script>​

デモ

于 2012-09-19T12:55:50.340 に答える
1

innerText と textContent のブラウザーの非互換性なしでそれを行う別の方法です。正規表現を使用して数値を抽出した後、innerHTML を使用します。また、parseInt を使用するときは常に基数を定義することをお勧めします (私が発見した奇妙な驚きを避けるためです)。最後に値をインクリメントします。

var theNum = parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/), 10);
alert(theNum+=1)
于 2012-09-20T10:50:55.213 に答える
0

このhtmlコードを想定すると:

<div id="someDiv">
  756
  <span></span>
</div>

これを(jqueryで)使用できます:

var div = $("#someDiv");
div.text(parseInt(div.text()) + 1);
于 2012-09-19T13:02:05.280 に答える
0

テキストの分割を使用して番号を取得しました。
また、jQuery を使用してテキストを取得しました。ここで使用した他の方法を使用できます。

var divText = $('div').text();
var contentArray = divText.split('\n');       
var yay = parseInt(contentArray[1].trim(), 10);
alert(yay);
alert(yay++);

ここでフィドルを参照してください。

于 2012-09-19T13:06:28.340 に答える
0

最良の方法は要素で数値をラップすることですが、これで回避できます:

var div = document.getElementById('div')
var num = parseInt((div.innerText) ? div.innerText : div.textContent);
div.childNodes[0].nodeValue = num + 1;
于 2012-09-19T13:06:53.633 に答える
0

最善の解決策は、数値を独自の でラップすること<span>です。それが不可能な場合 (HTML コードを作成しない場合)、 のすべての子ノードを反復処理できます<div>。そのうちの 1 つが、対象とするテキスト ノードになります。

于 2012-09-19T12:51:51.907 に答える
0
<div id="number">
    756
    <span></span>
</div>​


d = document.getElementById("number")
n = parseInt(d.innerHTML)+1;
alert(n)​;​
于 2012-09-19T12:56:34.427 に答える