innerHTMLについて



0   名前: パプリカ : 2006/06/29(木) 12:39  ID:4sBDY1nW
getElementByIdを使用してあるデータの取得を行っているのですが、
メタ文字が勝手に変換されてしまい、結果、
innerHTMLを使用した表示がうまくできず苦慮しています。

<html><body>

<input type="hidden" id="data" value="&gt;&lt;"/>
<div id="test"></div>

<script language="javascript">
// id=dataから"&gt;&lt;"(メタ文字で"><")を取得しDIV(test)内に表示
var txt=document.getElementById("data").value;
document.getElementById("test").innerHTML=txt;
// txtの中身は"><"
// DIV(test)に表示されるのは">"のみ
//
// inputタグには、タグとして認識させたい"<>"を含むことも有り、
// id="data"からとってきた値を一律でメタ文字に変換することは避けたいです。
//
</script>

</body></html>


ご教授よろしくお願いいたします。

環境:Win XP + IE6

1   名前: 牛若 : 2006/06/29(木) 12:39  ID:Ze2XeEKi
<input type="hidden" id="data" value="<>"/>


http://msdn2.microsoft.com/ja-jp/library/system.web.ui.htmlcontrols.htmlcontainercontrol.innerhtml.aspx

2   名前: パプリカ : 2006/06/29(木) 12:39  ID:4sBDY1nW
早速の返信ありがとうございます。

<input type="hidden" id="data" value="<>"/>


の動作は問題ないのですが、

<input type="hidden" id="data" value="><"/>


の場合に問題があります。
value="><"でもvalue="&gt;&lt;"でもデータを取得したときには"><"となり、
innerHTMLを使用して表示すると、">"となってしまいます。

3   名前: NullPo : 2006/06/29(木) 12:39  ID:XoE1slt9
innerTextを使ってみたらどうかな。

4   名前: パプリカ : 2006/06/29(木) 12:39  ID:4sBDY1nW
NullPo様、返信ありがとうございます。

valueにタグを入れることもあり、innerTextではちょっと難しいのですが、
文字として認識させたい"<"、">"を適当な文字列にReplaceして
innerHTMLに設定する直前に再度"&gt;"、"&lt;"に直すことで対応しました。

基本的な解決ではないので、若干しこりが残りますが、気にしないことにします。

お手数をおかけしました。

5   名前: miz : 2006/06/29(木) 12:39  ID:f9cY3mpy
&gt;&lt; と言う文字列をデータとしたいなら、& を &amp; にします。
<input type="hidden" id="data" value="&amp;gt;&amp;lt;" />

一覧へ戻る