• ベストアンサー

IEの半角スペースの連続とinnerHTMLについて

IEだと文頭に半角スペースがある場合は詰められ、文中に半角スペースが連続する場合は一つにまとめられてしまいます。 ただ、innerHTMLだと正しく取れると思っていましたがやはり詰められて取得されてしまいます。 ただしく取得できる方法を模索しております。 hiddenに値を設定などではなく、現在のHTMLからの取得方法をお願い致します。 下記のソースで状況を再現できますのでご確認ください(blankの間のスペースは2つ空いています) <html> <head> <script> function testfunc() { str = document.getElementById('test2').innerHTML alert('[' + str + ']'); } function testfunc2() { str = document.getElementById('test').childNodes[0].firstChild.nodeValue; alert('[' + str + ']'); } </script> </head> <body> <div id="test"><div id="test2"> blank blank </div></div> <input type="button" value="CLICK ME1" onclick="testfunc()"><br> <input type="button" value="CLICK ME2" onclick="testfunc2()"> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
  • junkUser
  • ベストアンサー率56% (218/384)
回答No.1

innerHTML は文字通り、タグの中の html なので特別な例外は存在しません。 div タグの代わりに、pre や xmp タグを使ってはいかがでしょうか。

tetuya120
質問者

お礼

特別な例外は存在しないのですか。。。 そもそも入力させないなど別の回避手段を考えます。 回答ありがとうございます。

その他の回答 (1)

回答No.2

半角スペースの連続は無視されてしまいます。 実際参照ではだめですか? &nbsp; で半角スペースが表示されます。 innerHTMLで取得すると、"&nbsp;&nbsp;"という文字列がとれ alertで表示すると"&nbsp;&nbsp;"と表示されると思うので javascript内で do{ str = str.replace("&nbsp;", " "); }while(str.indexOf("&nbsp;") >=0 ) とすればよいでしょう

tetuya120
質問者

お礼

文字参照も考えたのですが、表示時に置き換えた上で更にJavascriptで取得時に再度置きかえが必要なのがちょっと。。。 そもそも入力させないなど別の回避手段を考えます。 回答ありがとうございます。

関連するQ&A