cutmail's blog

write the code

javascriptでDOM要素を取得するときの挙動について

仕事でまたしてもjavascriptと格闘してました。
今回はjavascriptでDOM要素を取得した結果が思ったようにいかなかった。

例えば以下のようなソースの場合、

<script type="text">
function get_text(){
  var txt = document.getElementByID("hoge").innerHTML;
}
</script>
<div id="hoge">You&I</div>
<input type="button" onclick="get_text();" />

変数txtにはどんな値が入るか。

答え:

You&amp;I

そう。エスケープされた値が入るんです。
なぜ、エスケープされるかって?

それはinnerHTMLの挙動だかららしいです。

詳しくは以下を参照。

Javascript/HTML特殊文字のエスケープ - 俺の基地

では、どうすればよいか?
それは次回。