这个jQuery的语法错误是什么?

时间:2013-08-14 22:51:39

标签: jquery

我正在尝试找到阻止页面显示的代码,我认为这个遗留功能可能是罪魁祸首:

function SetTabOrder() {
    $.each([
            "#BeginDate",
            "#BeginTime",
            "#EndDate",
            "#EndTime",
            "#InputSite-input",
            "#cmdAddSite",
            "#InputDept-input",
            "#cmdAddDept",
            "#IncludeDepts",
            "#ExcludeDepts",
            "#UPCBeginsWith"], 
        function(i, n) {
            $(n).prop("taborder", "y");
        }
}

对于我来说,“每个”位看起来都是错误的,或者至少是奇怪的,并且我将右边的paren添加到右尖括号中,如下所示:

"#UPCBeginsWith"]), 

...但是jsFiddle / JSHint告诉我,“函数声明中缺少名称”

如果我删除了那个paren,它会给我两个错误,一个在第一行:

Unmatched '{'

......还有一个在最后一行:

"Missing semicolon."

但是,在末尾添加分号不会改变任何内容。

4 个答案:

答案 0 :(得分:4)

function SetTabOrder() {
    $.each(["#BeginDate",
            "#BeginTime",
            "#EndDate",
            "#EndTime",
            "#InputSite-input",
            "#cmdAddSite",
            "#InputDept-input",
            "#cmdAddDept",
            "#IncludeDepts",
            "#ExcludeDepts",
            "#UPCBeginsWith"], 
        function(i, n) {
            $(n).prop("taborder", "y");
        });
}

答案 1 :(得分:2)

我认为缺失括号的位置在回调函数之后:

  $.each( an_array, function(){
    // callback
  });
//-^---- this one

答案 2 :(得分:2)

$.each是一个函数调用,因此需要有一个右括号(并且还应该有一个分号)。

$.each([
    ...
], function () {
    ...
});← here's your issue

答案 3 :(得分:2)

您忘记关闭每个人的电话。

function SetTabOrder() {
    $.each([
        "#BeginDate",
        "#BeginTime",
        "#EndDate",
        "#EndTime",
        "#InputSite-input",
        "#cmdAddSite",
        "#InputDept-input",
        "#cmdAddDept",
        "#IncludeDepts",
        "#ExcludeDepts",
        "#UPCBeginsWith"], 
    function(i, n) {
        $(n).prop("taborder", "y");
    })
}

如果您使用的编辑器可以匹配括号,它将对您有所帮助。以VI为例,你可以点击%符号跳转到匹配的字符。对于windows notepad++,对于unix emacsvi来说,这是一个不错的选择。