如果我尝试将PHP数组元素作为arg传递,则无法调用Javascript函数。 我已经尝试了所有的东西(除了正确的东西,我想)。
这是PHP代码 - 第二行是失败的:
var_dump($theRow[11]);
$htmlBuffer = '<div onclick="showIt(' . $theRow[11] . ')">does not work!</div>';
$htmlBuffer = $htmlBuffer . '<div onclick="showIt()"> THIS WORKS FINE! </div>';
以下是输出上述代码的HTML代码:
<html>
<body>
<?php echo '<div id="listSection">' . $htmlBuffer . '</div>';
?>
</body>
</html>
这是javascript函数'showIt()':
function showIt(theVal)
{
alert("HERE IS WHAT WAS PASSED IN: " + theVal);
}
以下是页面上的输出:
1)首先,我在页面上看到了这一点:
string(8) "52e43c33"
现在,这是100%罚款。这就是我期望在阵列位置#11看到的。 请注意,'theRow [11]'是一个PHP数组,其中每个数组元素都是一个8位(十六进制)数字。并且var_dump()调用显示位置11的数组元素是一个有效的8位(十六进制)数字,这就是我期望在那里找到的数字。这没关系。
2)然后我在页面上看到了这一点:
does not work!
THIS WORKS FINE!
当我点击“这个工作很精细!”在我的网页上,我看到一个警告框,上面写着:
HERE IS WHAT WAS PASSED IN: undefined
现在我没关系。我没有将showIt()的参数传递给我点击的代码行。出现alert()框的事实显示100%确定onclick()正在运行。
此处是失败:当我点击浏览器窗口中的文本行时:
**does not work!**
- 尝试传递theRow [11]作为showIt()的参数 - 在showIt()中调用的警告框不会出现。
我认为“好吧这是一个引用问题。”
所以我试过这些无济于事:
$htmlBuffer = '<div onclick="showIt(\'' . $theRow[11] . '\')">does not work!</div>';
$htmlBuffer = '<div onclick="showIt(\"' . $theRow[11] . '\")">does not work!</div>';
$htmlBuffer = '<div onclick="showIt("' . $theRow[11] . '")">does not work!</div>';
$htmlBuffer = '<div onclick="showIt($theRow[11])">does not work!</div>';
我的引用尝试没有成功。
如何正确引用代码行:
$htmlBuffer = '<div onclick="showIt(' . $theRow[11] . ')">does not work!</div>';
让theRow [11]成功传递给showIt()?
编辑:这是页面的“查看来源”:
string(8) "7ab79992"
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function showIt(theVal)
{
alert("HERE IS WHAT WAS PASSED IN: " + theVal);
}
</script>
</head>
<body>
<div id="listSection"><div onclick="showIt(7ab79992)">does not work!</div>
<div onclick="showIt()"> THIS WORKS FINE! </div></div>
</body>
</html>
答案 0 :(得分:2)
首先提示:如果您附加的字符串:$htmlBuffer .= "Something else";
等同于$htmlBuffer = $htmlBuffer . "Something else";
如果您100%确定$theRow[11]
的内容是字符串"52e43c33"
,则此版本将有效:
$htmlBuffer = '';
$htmlBuffer .= '<div onclick="showIt(\'' . $theRow[11] . '\');">does not work!</div>';
重要的是,您使用'
引用了javascript字符串,因此您必须确保$theRow[11]
的php内容不得包含任何'
。易于使用'
引用javascript参数字符串,因为您使用"
打开HTML属性。删除您正在尝试的其他行,因为这可能会导致报价不平衡。
检查浏览器的输出(使用view-source:URL
),您必须看到以下内容:
<div onclick="showIt('52e43c33');">does not work!</div>
答案 1 :(得分:1)
小Heredoc如何避免所有令人讨厌的引用/逃避?
$htmlBuffer = <<<EOD
<div onclick="showIt('$theRow[11]')">does not work!</div>
EOD;
答案 2 :(得分:1)
试试这个:
<html>
<body>
<div id="listSection">
<div onclick="showIt(<? echo $theRow[11] ; ?>)">does not work!
</div>
</div>
<!--and this too-->
<!--<?php echo "<div id="listSection"><div onclick=".'"'."showIt($theRow[11]".'"'.">does not work!</div>" ; ?>-->
</body>
</html>
好吧,我没有检查过这个,但它一直对我有用。
祝你好运!!