意外的标记 }

时间:2010-12-20 16:19:22

标签: javascript syntax

我有一个打开模型窗口的脚本.. Chrome在一条甚至没有结束大括号的行上给了我“Uncaught SyntaxError:Unexpected token}”。

以下是包含错误的脚本部分:

function showm(id1){
  window.onscroll=function(){document.getElementById(id1).style.top=document.body.scrollTop;};
  document.getElementById(id1).style.display="block";
  document.getElementById(id1).style.top=document.body.scrollTop;
}

有人对此有任何想法吗?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:21)

尝试通过jslint运行整个脚本。这可能有助于指出错误原因。

编辑好的,这不是脚本的语法问题。至少不是jslint可以检测的方式。

http://ft2.hostei.com/ft.v1/玩了实时代码后,您的脚本会在DOM中的onclick属性中放入生成的代码中存在语法错误。大多数浏览器都不能很好地报告通过这些事情运行的JavaScript中的错误(动态插入元素的onclick属性中的一段脚本的文件和行号是什么?)。这可能是您在Chrome中收到令人困惑的错误消息的原因。 FireFox错误消息不同,也没有有用的行号,尽管FireBug确实显示了导致问题的代码。

此代码段取自您在HTML的内联脚本块中的edit函数:

var sub = document.getElementById('submit');
...
sub.setAttribute("onclick", "save(\""+file+"\", document.getElementById('name').value, document.getElementById('text').value");

请注意,这会将元素的onclick属性设置为无效 JavaScript代码:

<input type="submit" id="submit" onclick="save("data/wasup.htm", document.getElementById('name').value, document.getElementById('text').value">

JS是:

save("data/wasup.htm", document.getElementById('name').value, document.getElementById('text').value

请注意缺少关闭paren以完成对save的调用。

另外,插入onclick属性并不是一种在JavaScript中添加事件处理程序的非常现代或简洁的方法。你为什么不使用DOM的addEventListener来简单地将一个函数挂钩到元素?如果你使用像jQuery这样的东西,这将更简单。

答案 1 :(得分:2)

你有无限循环:

function save() {
    var filename = id('filename').value;
    var name = id('name').value;
    var text = id('text').value;
    save(filename, name, text);
}

不知道你想用无限循环完成什么,但首先要摆脱它,看看事情是否有效。