2009-07-08 12 views
0

を使用obj.innerHTML = "abcxyz <[email protected]>" ouput:abcxyz残りの部分は角括弧(<>)のため無視されています。 どのように同じを達成する。 advaceでjavascript innerHTML問題

おかげ

+0

ブラケットがバッククォートを試して不足している:。。 '\' ' – Boldewyn

答えて

2

HTMLそれが表示されない、つまり、あなたの文字列をエンコードしたり、コンテンツがまだそこにあるように実際に&lt;

+0

...と、そのためのJavaScript関数組み込みもあるが – TheHippo

+0

あなたが念頭に置いていれば、エスケープ()はURLエンコーディングをしていますか? – Boldewyn

+0

私は同意します、組み込みの関数はないと思います。prototype.jsのメソッドがあります:http:// www .prototypejs.org/api/string/escapeHTML – robertc

10

としてHTMLエンティティを使用しますが、ブラウザはそれを未知のタグを解釈し何でも生成されたページソース(FFでは、すべてのテキストをマークし、コンテキストメニューから「選択ソース」を使用するなど)を確認します。括弧引用

試してみてください。

obj.innerHTML = "abcxyz <[email protected]>".replace (/</g, "&lt;") 

これは、しかし、すべて<に置き換えられます。他のHTMLも組み込みたいのであれば、既にエンコードしたものとそうでないものを追跡する必要があります。

乾杯、HTMLで

+0

私は両括弧(<>)を置き換えなければならないので、両方を置き換える正規表現を使用することはできません。 – Abhimanyu

+0

Try:obj.innerHTML = "abcxyz <[email protected]> ".replace(//g、" > ") – robertc

+1

実際に'> 'を置き換えるのに本当に必要なものはありません.HTMLパーサは '<'で始まらない場合にはそれを保持するのに十分です。 – Boldewyn

1

、リテラル "<" がとして表される "& LT;"リテラル ">"は "& gt;"と表されます。 HTML 4.01 section 5.3.2を参照してください。

0

<と>を文字列でエスケープする必要があります。

1

私はこれしようとするだろう: アンエスケープ( '%ABCXYZ 3Cabc ...

+0

これはどのように使用できますか?それをエスケープすると、innerHTML文字列に '<'が再びあります。 – Boldewyn

+0

あなたは正しいです。ごめんなさい。 私はこの問題を誤解しました。 –