私はこのHTMLコードを持っています:
<div>
756
<span></span>
</div>
JavaScript を使用して、タグ内から番号 756 を取得し、それを 1 ずつ増やしたいと考えています。divタグ内から番号div
を除外し<span>
て番号のみを取得する最良の方法は何ですか?
私はこのHTMLコードを持っています:
<div>
756
<span></span>
</div>
JavaScript を使用して、タグ内から番号 756 を取得し、それを 1 ずつ増やしたいと考えています。divタグ内から番号div
を除外し<span>
て番号のみを取得する最良の方法は何ですか?
これを試して:
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/
そのために使用できます.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);
フィドル。
<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>
innerText と textContent のブラウザーの非互換性なしでそれを行う別の方法です。正規表現を使用して数値を抽出した後、innerHTML を使用します。また、parseInt を使用するときは常に基数を定義することをお勧めします (私が発見した奇妙な驚きを避けるためです)。最後に値をインクリメントします。
var theNum = parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/), 10);
alert(theNum+=1)
このhtmlコードを想定すると:
<div id="someDiv">
756
<span></span>
</div>
これを(jqueryで)使用できます:
var div = $("#someDiv");
div.text(parseInt(div.text()) + 1);
テキストの分割を使用して番号を取得しました。
また、jQuery を使用してテキストを取得しました。ここで使用した他の方法を使用できます。
var divText = $('div').text();
var contentArray = divText.split('\n');
var yay = parseInt(contentArray[1].trim(), 10);
alert(yay);
alert(yay++);
ここでフィドルを参照してください。
最良の方法は要素で数値をラップすることですが、これで回避できます:
var div = document.getElementById('div')
var num = parseInt((div.innerText) ? div.innerText : div.textContent);
div.childNodes[0].nodeValue = num + 1;
最善の解決策は、数値を独自の でラップすること<span>
です。それが不可能な場合 (HTML コードを作成しない場合)、 のすべての子ノードを反復処理できます<div>
。そのうちの 1 つが、対象とするテキスト ノードになります。
<div id="number">
756
<span></span>
</div>
d = document.getElementById("number")
n = parseInt(d.innerHTML)+1;
alert(n);