2016-09-27 13 views
3

に注入:JavascriptをHTML文字列 - これは私が持っているHTMLで文書

<ul id="myUL"> 
</ul> 

これは私がやっているものです:

var myString = " &lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Something Else&lt;/li&gt;" 

var div = document.createElement('div'); 
div.innerHTML = myString; 
$("#myUL").append(div.innerHTML); 

これは私が受け取るものです:

<ul id="myUL" > 
    &lt;li&gt;&lt;a href="www.google.com"&gt;Google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Something Else&lt;/li&gt; 
</ul> 

これは私が受信したいものです:

<ul id="myUL"> 
    <li> 
    <a href="www.google.com">Google</a> 
    </li>  
    <li> 
    Something Else 
    </li> 
</ul> 

アドバイスはありますか?

+0

。それらをエンコードするのではなく単に '<'などの文字を使用するだけです。 –

答えて

8

最初に、に無効なHTMLがあるため、divを追加できないことに注意してください。 ulは子供としてliのみを含めることができます。

問題は、文字列にエスケープされたHTMLが含まれているためです。

var myString = '<li><a href="http://www.google.comp">Google</a></li><li>Something Else</li>'; 
 
$("#myUL").append(myString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myUL"></ul>

それとも、文字列のアンエスケープすることができます:htmlDecode()機能の詳細については、

var myString = "&lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Something Else&lt;/li&gt;" 
 
$("#myUL").append(htmlDecode(myString)); 
 

 
function htmlDecode(input){ 
 
    var e = document.createElement('div'); 
 
    e.innerHTML = input; 
 
    return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myUL"></ul>

参照this questionをあなたはプレーンな文字列を使用できます。

+0

これは私が必要としていたものです。どうもありがとうございます! – Skylerdw

+1

問題なし、喜んで –

+0

明確にするために、あなたが最も確実に 'ul'に' div'を追加することができます。無効でもなくても、ほとんどすべてのブラウザがそうすることができます結果を多かれ少なかれ一貫して表現することさえできる)。あなたが実際にそれを行うことができるという事実は、あなたが*すべきであるということを意味しません。 –

-1

最初の文字列をデコード:

var myString = " &lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Something Else&lt;/li&gt;" 
 

 
var div = document.createElement('div'); 
 
div.innerHTML = decodeURIComponent(myString); 
 
$("#myUL").append(div.innerHTML);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myUL"> 
 
</ul>

+0

文字列はHTMLでエンコードされているため、URLエンコードされていないので、 'decodeURIComponent'は動作しません。 –

+0

@RoryMcCrossanなぜ結果がデコードされるのですか? – Mohammad

+0

それは...? HTMLは画面に表示され、解釈されません。 –

3

あなたはまた、DOMパーサを通して、あなたのエスケープされた文字列を解析することができます:あなたのコードと一緒に

function unescapeHTML(input) 
{ 
    var doc = new DOMParser().parseFromString(input, "text/html"); 
    return doc.documentElement.textContent; 
} 

を...

var myString = " &lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Something Else&lt;/li&gt;" 

var div = document.createElement('div'); 
div.innerHTML = unescapeHTML(myString); 
$("#myUL").append(div.innerHTML); 

これはうまくいくはずです。

0

あなたはデータをデコードする簡単な関数を作成することができます - そして、あなたの文字列をアンエスケープする

function decodeEncodedHtmlString(input){ 
    var e = document.createElement('div'); 
    e.innerHTML = input; 
    return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; 
} 

var myString = " &lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Something Else&lt;/li&gt;" 

document.getElementById('myUL').innerHTML = decodeEncodedHtmlString(myString); 

DEMO

+0

信頼できない文字列ソースでは安全です。 –

0

コールアンエスケープ機能あなたのULリストにその値を代入

var myString = "&lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Something Else&lt;/li&gt;" 
 

 
var div = document.createElement('div'); 
 
div.innerHTML = unescape(myString); 
 
$("#myUL").append(div.innerHTML);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myUL"> 
 
</ul>

3

jQueryでデコードすることもできます。 .html()でエンコードされた文字列を追加すると、jQueryはそれをデコードします。その後、.text()でデコードされた結果を得ることができます。私たちは、* *その文字が何をしたいの正反対であるHTMLタグの開口部として解釈されるのを防ぐために `` <を使用

var myString = "&lt;li&gt;&lt;a href=&quot;www.google.comp&quot;&gt;Google&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Something Else&lt;/li&gt;" 
 
$("#myUL").html($("<div/>").html(myString).text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myUL"></ul>

関連する問題