我有一个打开模型窗口的脚本.. 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;
}
有人对此有任何想法吗?任何帮助表示赞赏。
答案 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);
}
不知道你想用无限循环完成什么,但首先要摆脱它,看看事情是否有效。