javascript意外标识符

时间:2011-06-22 12:25:49

标签: javascript

我正在尝试压缩我的JavaScript代码,以减少我网站上的流量。它一直工作正常,但现在我遇到了一个我无法解决的错误。

我把我的ajax功能变成了一行:

function(){if(xmlhttp.readyState==4&&xmlhttp.status==200){document.getElementById("content").innerHTML=xmlhttp.responseText;}}xmlhttp.open("GET","data/"+id+".html",true);xmlhttp.send();}

但是chrome控制台告诉我这行有一个意外的标识符。 Firefox说这条线上缺少一个分号。

我一直试图弄清楚出了什么问题,但我找不到错误,有人可以帮我这个吗?

6 个答案:

答案 0 :(得分:35)

是的,你有}太多了。无论如何,压缩自己往往会导致错误。

function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("content").innerHTML = xmlhttp.responseText;
    }
} // <-- end function?
xmlhttp.open("GET", "data/" + id + ".html", true);
xmlhttp.send();
}

改为使用Closure Compiler

答案 1 :(得分:10)

我建议使用http://jsbeautifier.org/ - 如果您将代码段粘贴到其中并按美化,则错误会立即显示。

答案 2 :(得分:3)

responseText;}}的末尾或从行的末尾删除一个

答案 3 :(得分:3)

在这种情况下,最好重新添加空格,这会立即显现语法错误:

function(){
  if(xmlhttp.readyState==4&&xmlhttp.status==200){
    document.getElementById("content").innerHTML=xmlhttp.responseText;
  }
}
xmlhttp.open("GET","data/"+id+".html",true);xmlhttp.send();
}

有太多了。此外,在关闭函数后,你应该添加一个;在xmlhttp.open()

之前

最后,我没有看到那个匿名函数在那里做什么。它从未被执行或引用。你确定你粘贴了正确的代码吗?

答案 4 :(得分:2)

看起来代码中有一个额外的花括号。

function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("content").innerHTML = xmlhttp.responseText;
    }
// extra bracket }
xmlhttp.open("GET", "data/" + id + ".html", true);
xmlhttp.send();
}

答案 5 :(得分:0)

如果你想压缩 JS,我推荐你使用 Closure Compiler,这是 Google 为网站开发者提供的工具。它还提供了可以自己实现的额外API

相关问题