未捕获的语法错误:意外的标识符。

7

你好,我遇到了JS错误:

 Uncaught SyntaxError: Unexpected identifier

here

<script type="text/javascript">
var cur_level = 1;
var ids_arr = new Array(<?php echo $max_level?>);
var im_here = new Array(<?php echo $max_level?>);
ids_arr[0] = 1;
im_here[0] = "|";
function displayData(id, level, used, title)
{
if(used){
    choice = document.getElementById('divv'+id).innerHTML;
    document.getElementById('test_div').innerHTML = choice;

} else {
    document.getElementById('test_div').innerHTML = ' No lerning paths to show.';
    updateLinksDiv(id, level, title);

  }
}

function updateLinksDiv(id, level, title)
{
var links_div_info = document.getElementById('links_parent_'+id);
var tmpHTML = '';
var here = '';

for(i=0;i<level;i++){
    here+= '->'+im_here[i];
    links_div_info = document.getElementById('links_parent_'+ids_arr[i]);
    tmpHTML += '<div id="divl_'+links_div_info.id+'">'+links_div_info.innerHTML+'</div>';
}
links_div_info = document.getElementById('links_parent_'+id);
tmpHTML += '<div id="divl_'+links_div_info.id+'">'+links_div_info.innerHTML+'</div>';

document.getElementById('links').innerHTML = tmpHTML;
ids_arr[i] = id;
im_here[i] = title;
}

</script>


<script type="text/javascript">
    window.onload=updateLinksDiv(1 , 0 , "|" ) ;
</script>

这些函数应该创建一个“展开”的功能,可以逐级打开。一切正常,直到我添加了“标题”,然后开始出现错误。错误指向最后一个

标签,但我就是找不到错误所在... 我尝试像这样调用 displayData:

onclick="displayData('.$cat->id.','.$cat->level.',0,'.$cat->title.')"

有什么建议是我没有看到的吗?

谢谢


4
你有一个 JavaScript 错误,请显示给我们 JavaScript 代码,而不是生成 JavaScript 的 PHP 代码。 - Quentin
请告诉我们哪一行触发了错误。 - Quentin
顺便提一下,您不应该使用 onxxx 属性。相反,在页面加载后将事件绑定到元素上 - 这被称为非侵入式JavaScript。同样地,使用 innerHtml 是一个XSS注入漏洞的食谱。我强烈建议使用jQuery或类似的库。 - phihag
PHP 生成的链接为 displayData(26,1,0,כיתה ג),我在最后一个</script>处出现了错误,这就是它指向我的位置... - Dvir Levy
这个回答解决了你的问题吗?Chrome的Javascript控制台中出现SyntaxError:Unexpected Identifier - Michael Freidgeim
1个回答

8
在你的评论中提到了displayData(26,1,0,כיתה ג),这解释了症状,因为最后一个参数除了希伯来字母外还包含一个空格,所以JavaScript解释器将其视为由空格分隔的两个标识符,这些标识符可能未定义。Google Chrome给出了你描述的错误消息,而Firefox和IE则更加神秘地说“缺少)”,意思是缺少右括号。
显然,生成的代码应该在最后一个参数中加上引号,即'כיתה ג'。你需要修改生成的内容以包含它们。

2
在另一个浏览器中检查控制台,太棒了! - DigitalDesignDj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接