【问题标题】:SyntaxError: missing ; before statement | ReferenceError:[function] is not defined语法错误:缺少;声明前 | ReferenceError:[function] 未定义
【发布时间】:2016-06-12 04:08:22
【问题描述】:

我在之前运行良好的代码中遇到了错误。我不确定我是否对其进行了任何更改。

错误:

语法错误:缺失;声明之前

代码片段:

function ChangeOptions() {
var x = document.getElementById("Select1").value;
var y = document.getElementById("Select2");
var z = document.getElementById("Select3");

 if(x == "Sch"){y.innerHTML = "<option value="Sch1">Sch1</option><option  value="Sch1">Sch2</option>"; 
                z.innerHTML = "<option value="1">1</option><option value="1" value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option>";}
if(x == "COMM"){y.innerHTML = "<option value="COMM1">COMM1</option><option value="COMM2">COMM2</option>"; 
                z.innerHTML = "<option value="1-4">1-4</option><option value="5-7">5-7</option><option value="8-10">8-10</option>";}
if(x == "Inst"){y.innerHTML = "<option value="Inst1">Inst1</option><option value="Inst2">Inst2</option>"; 
                z.innerHTML = "<option value="1-4">1-4</option><option value="5-7">5-7</option><option value="8-10">8-10</option>";} 
}

当我最初加载我的网站时,我在控制台中收到此错误。如果我单击我的 html 中的选择按钮,该按钮在 onchange 事件上调用此函数,那么我会收到一个错误

ReferenceError: ChangeOptions 未定义

但是,当我删除条件运算符(ifs)时,我没有得到 ReferenceError: ChangeOptions is not defined

有人可以指导我吗?

【问题讨论】:

  • 这是您正在使用的“有趣”缩进方案。
  • 有点像临时遵守语法规则? :)
  • 乔纳森的回答中代码的格式更常见,大多数人会发现它更容易阅读。
  • 好的,对不起!!一定会牢记在心! :)

标签: javascript syntax-error referenceerror


【解决方案1】:

您的字符串被内部双引号撕裂。在外部使用单引号或使用反斜杠转义内部引号。

例如"This is a \"valid\" string"'This is a "valid" string' 也是。

只是一个陷阱 - 使用三等号来实现完全相等。除非您知道使用双等于相等匹配的确切原因,否则不要这样做。那是我的 2 美分。

function ChangeOptions() {
  var x = document.getElementById("Select1").value;
  var y = document.getElementById("Select2");
  var z = document.getElementById("Select3");

  if (x === "Sch") {
    y.innerHTML = '<option value="Sch1">Sch1</option><option  value="Sch1">Sch2</option>';
    z.innerHTML = '<option value="1">1</option><option value="1" value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option>';
  }
  if (x === "COMM") {
    y.innerHTML = '<option value="COMM1">COMM1</option><option value="COMM2">COMM2</option>';
    z.innerHTML = '<option value="1-4">1-4</option><option value="5-7">5-7</option><option value="8-10">8-10</option>';
  }
  if (x === "Inst") {
    y.innerHTML = '<option value="Inst1">Inst1</option><option value="Inst2">Inst2</option>';
    z.innerHTML = '<option value="1-4">1-4</option><option value="5-7">5-7</option><option value="8-10">8-10</option>';
  }
}

【讨论】:

  • @RohitNair 不要忘记接受答案(即使不是我的!)
【解决方案2】:

我在这里看到的几个问题。您需要转义内部的双引号,或者更好地为外部的字符串使用单引号。

    function ChangeOptions() {
      var x = document.getElementById("Select1").value;
      var y = document.getElementById("Select2");
      var z = document.getElementById("Select3");

      if(x == "Sch"){
        y.innerHTML = '<option value="Sch1">Sch1</option><option  value="Sch1">Sch2</option>';
        z.innerHTML = '<option value="1">1</option><option value="1" value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option>';
      }      
     if(x == "COMM") {
       y.innerHTML = '<option value="COMM1">COMM1</option><option value="COMM2">COMM2</option>';
       z.innerHTML = '<option value="1-4">1-4</option><option value="5-7">5-7</option><option value="8-10">8-10</option>';
     }
     if(x == "Inst") {
       y.innerHTML = '<option value="Inst1">Inst1</option><option value="Inst2">Inst2</option>';
       z.innerHTML = '<option value="1-4">1-4</option><option value="5-7">5-7</option><option value="8-10">8-10</option>';
     }
   }

【讨论】:

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