htmlでwebサイトを作ろうと考えているのですが、javascriptでdiv内の文字の取得の仕方が解りません。
どなたか詳しい方取得の方法を教えていただけますか。
<div id="div1"> <div>1</div> <div>2</div> <div>3</div> </div>
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
こんにちは。
未熟者ですが、私ならこういうコードを書きます。
何かコメントありましたら、ご助言などお願いします。
■divの直下にあるテキストを抽出する場合
<script> var forEach = Array.prototype.forEach; var parentElem = document.getElementsByTagName( "div" )[0]; forEach.call(parentElem.childNodes, function(childElem){ if( childElem.innerHTML ){ console.log( childElem.innerHTML ); }else{ console.log("残念!タグの直下に文字はありませんでした!"); } }); </script>
これでいかがでしょう?
投稿2016/01/12 13:22
編集2016/01/12 13:24総合スコア94
0
こんにちは。
どちらのdivについて言っているのかはわかりませんが、
プレーンなjavascriptでしたら、こんな感じでいかがでしょうか?
javascript
1window.onload=function(){ 2 3 var element = document.getElementById("div1"); 4 var childs = element.childNodes; 5 6 var gettingStr = ""; 7 for(var i=0; i < childs.length; i++ ){ 8 if(childs[i].tagName == "DIV"){ 9 gettingStr += childs[i].innerText+"\n"; 10 } 11 } 12 alert(gettingStr); 13}
・ getElementById()
で親divのidを指定し、エレメントを取得
・ childNodes
で子要素を全て取得
・ tagName
でDIVのタグ名かどうかを判定
・ innerText
で該当タグ内のテキストを取得
となっています。
投稿2016/01/12 05:35
総合スコア1844
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
innerText は IE 独自拡張です。
IE8 も考慮するなら textContent, innerText を併用する必要があります。
IE9 なら childNodes の代わりに children を、innerText の代わりに textContent が使えるのでクロスブラウザが楽です。
MSサポートサイクル的にはあと9時間で IE8 のサポートが切れるので、IE8 に対応するのは特別な状況でなければ考慮しなくて良いと思います。
https://www.microsoft.com/japan/msbc/Express/ie_support/
think49さん
ご指摘ありがとうございます。
> innerText は IE 独自拡張です。
そうだったんですね。
chromeで実行して普通に動いていたので、気づきませんでした。
この場合、innerHTMLでもいけますね。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。