2012-10-15 38 views
0

JavaScript將我的<轉換爲&gt;。我想提醒它,但我的消息是編碼標記像@#&amp;*()}{&gt;?&gt;? - 如何正常顯示它阻止執行作爲HTML代碼?爲什麼JavaScript將我的<轉換爲>

<span id="ID" onClick="alertIt(this.id);"> 

    <p>Some string with special chars: [email protected]#&*()}{>?>?>|{">@#$#^#$</p> 

    <p>Why when clicked it gives something like this:</p> 

    <p>'<br> 
    Some string with special chars: [email protected]#&amp;*()}{&gt;?&gt;?>|... and so on 
    <br>'</p> 

</span> 

<script type="text/javascript"> 

function alertIt(ID) 
{ 

    var ID = ID; 
    var content = document.getElementById(ID).innerHTML; 

    alert(content); 

} 

</script> 
+3

您的原始內容無效HTML。 – geoffspear

+0

@Wooble這不是我的問題的缺點 –

+0

這就是爲什麼我發佈它作爲評論而不是答案。但結果是JS沒有先應用某種將其轉換爲HTML的方法,就不能將其視爲HTML。出於歷史原因,瀏覽器不僅拒絕顯示該頁面,而且還拋出一個大錯誤消息,告訴用戶他們已瀏覽到一個破損的頁面。 – geoffspear

回答

1

使用innerText而不是innerHTMLhttp://jsfiddle.net/WVf95/

+0

現在它的'undefined'(用於Firefox) –

+1

是的,你可能需要在瀏覽器之間規範化。像'innerText || textContent'。請參閱http://www.quirksmode.org/dom/w3c_html.html – David

0

您的問題是你用錯誤的方法去顯示與alert()文本。

某些字符在HTML文本中是非法的(它們用於HTML標記和實體)。 innerHTML將確保文本正確轉義(即您可以看到標籤和轉義文本)。

如果您想在alert()中看到標籤和文字,則沒有解決方案。

如果你只想要文本,那麼你將不得不自己提取它。沒有內置的支持。這也不是很簡單的實施。我建議在您的網頁中加入jQuery;然後你可以用文字:

function alertIt(ID) { 
    alert($(ID).text()); 
} 
0

使用textContent instabed的innerHTMLinnerText是一種解決方案。

相關問題