我正在尝试将服务器端的值传递给onclick
标记的a
处理程序,但是当我点击链接时,它会在客户端提供不同的结果。
我的PHP代码:
$any="link1";
echo(" <a id='link1' href='#' onclick='VisibleFalse($any)'>[+]</a><span><b>$candidatename</b></span>");
我想将字符串"link1"
传递给函数VisibleFalse
,该函数将字符串显示为警告:
function VisibleFalse(ID)
{
alert(ID);
}
但它正在警报中打印"http://localhost/..."
。
我很感激您的任何建议。
答案 0 :(得分:3)
问题是,你传递的是一个字符串而忘记为它添加引号,以便结果成为JavaScript函数中的一个字符串。这是一个更好的方式来看待这个:
$any="link1";
// First, echo isn't a function. It can be faked to be used as one, but that's not recommended
// Second, sort out your quoting like this:
echo '<a id="link1" href="#" onclick="VisibleFalse(\''.$any.'\')">[+]</a><span><b>'.$candidatename.'</b></span>';
// OR
echo "<a id='link1' href='#' onclick='VisibleFalse(\"$any\")'>[+]</a><span><b>$candidatename</b></span>";
答案 1 :(得分:0)
必须引用JavaScript中的字符串文字。
onclick='VisibleFalse("$any")'>
(但是内部事件属性被认为是更加痛苦然后它们是值得的,就像嵌入在PHP中的HTML中嵌入的Javascript一样。请改用unobtrusive JavaScript。)
您还需要确保$any
不包含任何可以终止字符串文字的引号字符(并且您可能应该使用htmlspecialchars
使其安全,因此它不会终止属性值)
答案 2 :(得分:0)
使用与引用'
等效的HTML Unicode(其他字符可以here)。
echo(" <a id='link1' href='#' onclick='javascript:VisibleFalse('$any')'>[+]</a><span><b>$candidatename</b></span>");