ある要素内の文字数を計測しようと以下のようなコードを試したところ
<div> <p>A</p> </div> <script> var hoge = document.querySelector('div'); console.log(hoge.textContent.length); </script>
なぜか 8
が返ってきました…
(すいません 5
でした!)
調べてもわからず、ご教授お願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
改行や空白もカウントしているからでは。
js
1var hoge = document.querySelector('div'); 2console.log(hoge.textContent.length,encodeURIComponent(hoge.textContent)); 3// 5 "%0A%20%20A%0A" 4console.log(hoge.textContent.trim().length,encodeURIComponent(hoge.textContent.trim())); 5// 1 A 6```**動くサンプル:**[https://jsfiddle.net/tkazcxce/1/](https://jsfiddle.net/tkazcxce/1/)
投稿2018/05/08 06:47
編集2018/05/08 06:58総合スコア69407
0
ベストアンサー
pをインデントする文字もカウントしてるのでは?
(改行マークもカウントします)
追記
インデントや改行を除外
javascript
1<div> 2 <p>A</p> 3</div> 4<script> 5var txt = document.querySelector('div').textContent; 6txt=txt.replace(/^\s+|\r|\n/g,""); 7console.log(txt.length); 8</script>
上記行の先頭にある空白文字を削除していますが
場合によってはカウントしたい場合もあるので、ケースバイケースで
除外対象をどうしたいのか検討してください
投稿2018/05/08 06:38
編集2018/05/08 06:57総合スコア114843
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
#innerHTMLと勘違いしておりました。誤った回答のため、参考にしないようにお願いします。
textContentは指定エレメントの中の「タグを含めた」文字列を取得します。
lengthは文字数を取得します。
合ってますね。
投稿2018/05/08 06:40
編集2018/05/08 06:59総合スコア80850
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/08 06:42
2018/05/08 06:42
2018/05/08 06:46 編集
2018/05/08 06:49
2018/05/08 06:53
2018/05/08 06:55
2018/05/08 06:58
2018/05/08 06:59
2018/05/08 07:01
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/08 07:03