我有javascript函数:
function someAction(thisTd,text){
alert(text);
thisTd.innerHTML=text;
...
}和html-file:
<td onclick="someAction(this,<?echo 'Long-long text with <b>html-formatting</b>'?>)"/>当我使用这样的代码函数时,someAction不会调用(因为警报不会显示),并且在Opera中的错误控制台中也不会显示错误。如何解决这个问题?
我不使用框架(JQuery等)。
更新#1
当我使用这些代码时:
<?$encoded=str_replace("\n","",str_replace("\r\n","",$text));echo $encoded?>效果很好。但我不确定它在Linux中是否正确。(我使用Windows)
发布于 2010-10-21 06:20:28
确保您的HTML编码,并在参数周围放置单引号:
<td onclick="someAction(this, '<?echo htmlspecialchars('Long-long text with <b>html-formatting</b>', ENT_QUOTES) ?>')"/>发布于 2010-10-21 06:28:41
你应该移除回波标签和?
<div onclick="someAction(this,'Long-long text with <b>html-formatting</b>')">myDiv</div>你的职责是:
function someAction(thisTd,text){
thisTd.nodeValue=innerHTML
...
}发布于 2010-10-21 06:41:02
首先,必须将字符串包装为单引号或html编码双引号:
<td onclick="someAction(this, '<?php echo 'yada yada'; ?>');"/>
<!-- OR -->
<td onclick="someAction(this, "<?php echo 'yada yada'; ?>");"/>其次,"echo"ed输出可以包含单引号或双引号,可以中断javascript字符串或html属性。假设您使用单引号包装回显字符串:
<td onclick="someAction(this, '<?php echo htmlspecialchars( str_replace( "'", "\\'", $that_long_text ) ); ?>');"/>https://stackoverflow.com/questions/3984778
复制相似问题