【问题标题】:Syntax error: Missing ; Before Statement语法错误:缺少;声明前
【发布时间】:2016-06-21 14:55:33
【问题描述】:

我在看似不错的代码上遇到语法错误,而且该错误没有意义,因此表明存在一些犯规行为。但是,我似乎无法确定它。在第一行,“aoColumns: [”表示语句之前缺少分号。这是有问题的代码:

<script type="text/javascript">
"aoColumns": [
      { "sTitle": "", "mData": null, "bSortable": false, "sClass":   "head0", "sWidth": "55px",
        "render": function (data, type, row, meta) {
          if (data.IsDirectory) {
            return "<a href='#' target='_blank'><i class='fa fa-folder'></i>&nbsp;" + data.Name +"</a>";
          } else {
            return "<a href='/" + data.Path + "' target='_blank'><i class='fa " + getFileIcon(data.Ext) + "'></i>&nbsp;" + data.Name +"</a>";
          }
        }
      }
    ]
"fnCreatedRow":  function(nRow, aData, iDataIndex) {
      if (!aData.IsDirectory) return;
      var path = aData.Path;
      $(nRow).bind("click", function(e){
         $.get('/files?path='+ path).then(function(data){
          table.fnClearTable();
          table.fnAddData(data);
          currentPath = path;
        });
        e.preventDefault();
      });
    };
    </script>

【问题讨论】:

  • 通常由假兔耳、支架、支架或括号不匹配引起。
  • "aoColumns": [ 如果不在对象初始值设定项内,则为语法错误。
  • 你在使用图书馆吗?
  • "string" : value 只能在对象中使用,因此要么将其更改为 var aoColumns = [],要么在代码周围包裹一个对象。
  • @JDB:不是真的。有函数,字符串拼接...

标签: javascript jquery datatables


【解决方案1】:

你所拥有的看起来像一个对象初始化器的 content,但没有开头和结尾。例如,这是有效的:

var object = {
"aoColumns": [
      { "sTitle": "", "mData": null, "bSortable": false, "sClass":   "head0", "sWidth": "55px",
        "render": function (data, type, row, meta) {
          if (data.IsDirectory) {
            return "<a href='#' target='_blank'><i class='fa fa-folder'></i>&nbsp;" + data.Name +"</a>";
          } else {
            return "<a href='/" + data.Path + "' target='_blank'><i class='fa " + getFileIcon(data.Ext) + "'></i>&nbsp;" + data.Name +"</a>";
          }
        }
      }
    ],
"fnCreatedRow":  function(nRow, aData, iDataIndex) {
      if (!aData.IsDirectory) return;
      var path = aData.Path;
      $(nRow).bind("click", function(e){
         $.get('/files?path='+ path).then(function(data){
          table.fnClearTable();
          table.fnAddData(data);
          currentPath = path;
        });
        e.preventDefault();
      });
    }
};

变化是:

  • 在顶部添加var object = {
  • }; 中删除 ; 曾经位于末尾,使其成为 }
  • 添加}; 以关闭对象
  • aoColumns 数组上关闭 ] 后添加 ,

【讨论】:

    【解决方案2】:
    var obj = {
        "key": value
    };
    

    你的花括号在哪里?您只是试图定义对象键而不将它们放在对象上,这就是您收到语法错误的原因。

    var my_object = {
        "aoColumns": [
            // code here
        ],
        "fnCreatedRow":  function(nRow, aData, iDataIndex) {
            // function definition here
        }
    };
    

    【讨论】:

      【解决方案3】:

      你所拥有的不是有效的 JavaScript 语法。

      假设您想要将数组分配给变量aoColumns,请执行以下操作:

      var aoColumns = [
        { "sTitle": "", "mData": null, "bSortable": false, "sClass":   "head0", "sWidth": "55px",
          "render": function (data, type, row, meta) {
            if (data.IsDirectory) {
              return "<a href='#' target='_blank'><i class='fa fa-folder'></i>&nbsp;" + data.Name +"</a>";
            } else {
              return "<a href='/" + data.Path + "' target='_blank'><i class='fa " + getFileIcon(data.Ext) + "'></i>&nbsp;" + data.Name +"</a>";
            }
          }
        }
      ]
      

      fnCreatedRow 也是如此。

      如果您尝试使用上述两个元素创建 JavaScript 对象,请查看其他答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-25
        • 2016-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多