使用Javascript添加动态HTML的字符串问题

问题描述:

我正在使用PHP生成一个Javascript按钮,该按钮添加了复选框和其他一些HTML。使用Javascript添加动态HTML的字符串问题

什么是正确的方法来逃脱这些字符,以包括他们在onclick事件?

只见它建议转换“和”以ASCII值,但是这似乎并没有帮助

$tempOutput = "<a href='temp.txt'>\"Happy\"</a>"; 
$tempOutput = str_replace("'", "&#39;", $tempOutput); 
$tempOutput = str_replace('"', "&quot;", $tempOutput); 

只是导致这个,如果你在使用前右呼应字符串:

<a href=&#39;temp.txt&#39;>&quot;Happy&quot;</a> 

和这个,如果你检查页面元素:

<a onclick=" 
        var divTag = document.createElement('div'); 
        divTag.innerHTML = '&lt;a href='temp.txt'&gt;&quot;Happy&quot;&lt;/a&gt;'; 
        document.getElementById('extraDiv').appendChild(divTag) ; 
       ">test</a> 

我也尝试只是一个根据extradiv的innerHTML,但在那里也没有成功。

我主要使用PHP的rawurlencode()和JavaScript的UNESCAPE():

<?php 
    $tempOutput = '<a href="temp.txt">'.htmlentities('"Happy"').'</a>'; 
    ?> 
    <a onclick=" 
       var divTag = document.createElement('div'); 
       divTag.innerHTML = unescape('<?php echo rawurlencode($tempOutput);?>'); 
       document.getElementById('extraDiv').appendChild(divTag) ; 
      ">test</a> 
    <div id="extraDiv"></div> 

这也将避免与其他字符,例如错误换行符。

+0

谢谢。除了必须首先执行htmlentities()之外,这是有效的。我基本上不能这样做,因为HTML是从另一个源返回的。在将它放入onclick之前,我不会生成它。整个字符串的htmlentities()并不完全适用。基本上所有事情都可以,只要HTML中的任何文本都没有双引号即可。 – Andrew 2011-06-14 12:52:53

逃生这样

$tempOutput = str_replace(array("'",'"'), array("\'",'&quot;'), $tempOutput); 
+0

这工作了很简单的例子,但它有一个更复杂的例子再次抛出一个错误,但它是一个开始谢谢。 – Andrew 2011-06-14 12:36:49

+0

我想我想要的是相反的,但谢谢。我的输入已经是这种格式。 – Andrew 2011-06-14 12:35:59