如果我尝试将PHP数组元素作为参数传递,我无法调用Javascript函数。 我试过所有的东西(除了正确的东西,我想)。无法将PHP变量传递给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()框出现的事实显示了onclick()正在工作的100%确定性。
,这里是失败的原因:当我点击文本的浏览器窗口中的行:
**does not work!**
- 这是试图通过theRow [11]作为参数showIt() - 在showIt()中没有出现提示框。
我想“好吧,这是一个引用问题。”
所以我尝试了这些无济于事:这里成功MY引用尝试
$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>';
NONE。
如何正确引用的代码行:)
$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>
你能发布生成的html代码(不是屏幕输出)吗? –
打开javascript调试器,看看是否有错误。 – Aris
@KristenJukowski我在原始问题的末尾添加了“查看源代码”输出。 – CFHcoder