如何将long值传递给javascript函数

时间:2010-10-21 06:17:41

标签: javascript html function

我有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)

4 个答案:

答案 0 :(得分:2)

确保你HTML encode并在参数周围添加单引号:

<td onclick="someAction(this, '<?echo htmlspecialchars('Long-long text with <b>html-formatting</b>', ENT_QUOTES) ?>')"/>

答案 1 :(得分:2)

你应该删除echo标签和?

 <div onclick="someAction(this,'Long-long text with <b>html-formatting</b>')">myDiv</div>

你的职能是:

function someAction(thisTd,text){
    thisTd.nodeValue=innerHTML
    ...
}

答案 2 :(得分:1)

首先必须在单个或html编码的双引号中包装字符串:

<td onclick="someAction(this, '<?php echo 'yada yada'; ?>');"/>
<!-- OR -->
<td onclick="someAction(this, &quot;<?php echo 'yada yada'; ?>&quot;);"/>

其次,“echo”ed输出可以包含单引号或双引号,可以破坏javascript字符串或html属性。假设您使用单引号来包装回显的字符串:

<td onclick="someAction(this, '<?php echo htmlspecialchars( str_replace( "'", "\\'", $that_long_text ) ); ?>');"/>

答案 3 :(得分:0)

只需在文本周围加上引号,即可生成:

逻辑上,这会产生错误。

使用简单引号或转义双引号(\“)