使用JS变量对PHP数组进行索引(预加载):;未捕获参考错误”;即使函数不是't调用
Using JS variable to index (pre-loaded) PHP array: "Uncaught Reference Error" even when function isn't called
我对PHP和JS都很陌生,所以这里很可能缺少一些基本的东西。我知道PHP在服务器端运行,JS在客户端运行。我的目标是用PHP生成一个数组,然后让用户的按键行为控制数组中元素的显示。这两个步骤都可以单独工作,但当我试图将所有内容放在一起时,会遇到一个未捕获的引用错误。我在这里读到,未捕获引用错误通常来自语法/解析问题,但我在代码的相关部分找不到任何语法错误。
下面是一些示意代码,说明了我遇到的问题。您会注意到函数ShowNextCell()在下面被注释掉了,第20行的函数调用也是如此。这段代码按预期执行:每当按下空格键时,最上面的一行就会增加,最下面的一行显示PHP数组的内容。凉的
但现在,如果您只取消注释ShowNextCell的函数定义(函数调用仍被注释掉),您会发现一切都崩溃了:
- JS控制台抛出未捕获语法错误,可能是因为嵌入的PHP在这个函数中没有正确评估,尽管相同的语法在表的第3行中评估得非常好行
- JS控制台还抛出一个Uncaught Reference Error,这样它现在认为我的setFocus()函数是未定义的。这是怎么回事可能,因为唯一改变的是定义未使用的函数(以及在setFocus()之后出现的函数已定义
- 此外,即使您通过单击顶部手动设置焦点行中,keyCheck()函数似乎也未定义,如下所示任何时候发生的另一个未捕获参考错误证明键被按下
不幸的是,对于我来说,ShowNextCell()函数是这个脚本中最关键的部分,所以我不能听之任之。我一整天都在做这件事,我完全受不了了。我非常希望你们能帮助我了解这里发生了什么。谢谢
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script>
function keyCheck(e)
{
var KeyID = (window.event) ? event.keyCode : e.keyCode;
switch(KeyID)
{
case 32: //spacebar
videocounter++;
document.getElementById("videocounterdisplay").innerHTML=videocounter; //this line works
//ShowNextCell();
break;
}
}
function setFocus(){
document.getElementById("TopRow").focus();
}
/*
function ShowNextCell(){
switch (videocounter)
{
case 1:
document.getElementById("1port").innerHTML="<? echo $Stimulus[1]; ?>";
break;
case 2:
document.getElementById("2port").innerHTML='<? echo $Stimulus[2];?>';
break;
case 3:
document.getElementById("3port").innerHTML='<? echo $Stimulus[3];?>';
break;
default:
document.getElementById("0port").innerHTML='An error has occurred';
break;
}
}
*/
var videocounter = 0;
</script>
</head>
<body onload="setFocus()">
<?php
$Stimulus = array("a","b","c","d");
?>
<table border="1">
<tr id="TopRow" tabindex="-1" onkeydown="keyCheck()"> <!-- Desired behavior: rightmost cell should start at 1 and increment with each press of the spacebar. -->
<td colspan="3">
Counter is set to:
</td>
<td id="videocounterdisplay">
</td>
</tr>
<tr> <!-- Desired behavior: an additional cell should be filled in (from left to right) each time the spacebar is pressed. -->
<td id="0port">
<? echo $Stimulus[0]; ?>
</td>
<td id="1port">
</td>
<td id="2port">
</td>
<td id="3port">
</td>
</tr>
<tr> <!-- Desired behavior: just to illustrate that indexing the php array is not the problem. -->
<td>
<? echo $Stimulus[0]; ?>
</td>
<td>
<? echo $Stimulus[1]; ?>
</td>
<td>
<? echo $Stimulus[2]; ?>
</td>
<td>
<? echo $Stimulus[3]; ?>
</td>
</tr>
</table>
</body>
</html>
在该函数中,在定义$Stimulus
数组之前,您已经有了<? echo $Stimulus[1]; ?>
。将数组定义移动到文件的顶部。在尝试访问PHP:中的数组之前,必须运行以下行
<?php
$Stimulus = array("a","b","c","d");
?>
相关文章:
- 相位器状态未捕获参考错误
- 尝试从 Jasmine 访问主干模型时出现参考错误
- 参考酶导入错误
- 全新车把安装会在首次运行时产生参考错误
- Dart 中的参考错误:按下按钮时未定义功能
- 参考错误:结帐页面上未定义付款
- 学习聚合物,获取参考错误:聚合物未定义
- 参考错误onnotification没有在推送通知cordova android中定义
- 未捕获的参考错误:谷歌没有定义谷歌图表
- 使用JS变量对PHP数组进行索引(预加载):;未捕获参考错误”;即使函数不是't调用
- 回波日期的参考错误
- 奇怪的错误:懦弱地拒绝包装带有圆形参考的物体
- 参考错误地理位置
- 参考错误:谷歌不是使用 ng-map GeoCoder 服务定义的
- 相位器未捕获参考错误:游戏未定义
- 未捕获的参考错误:stLight未定义(仅在Chrome中)
- 错误url对于动态注入的javascript函数是没有用的.需要用户提供参考
- 参考错误:Can't find variable: bootbox
- 参考错误:Can't find variable: dataKeys
- Chrome扩展-调用函数在标签上定义(参考错误)