SyntaxError: отсутствует; перед заявлением | ReferenceError: [функция] не определена

Я получаю сообщение об ошибке в коде, который раньше работал нормально. Я не уверен, внес ли я какие-либо изменения в него.

Ошибка:

SyntaxError: отсутствует; перед утверждением

Фрагмент кода:

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 не определен

Может кто-нибудь, пожалуйста, проведите меня через это?


person Rohit Nair    schedule 12.06.2016    source источник
comment
Вы используете интересную схему отступов.   -  person nnnnnn    schedule 12.06.2016
comment
Немного похоже на специальное соблюдение грамматических правил? :)   -  person Jonathan    schedule 12.06.2016
comment
То, как код отформатирован в ответе Джонатана, более привычно, и большинству людей его будет легче читать.   -  person nnnnnn    schedule 12.06.2016
comment
хорошо, извини!! Обязательно возьму на заметку! :)   -  person Rohit Nair    schedule 13.06.2016


Ответы (2)


Ваши строки разрываются внутренними двойными кавычками. Используйте одинарные кавычки снаружи или экранируйте внутренние кавычки, используя обратную косую черту.

Например. "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>';
  }
}
person Community    schedule 12.06.2016
comment
@RohitNair не забудьте принять ответ (даже если не мой!) - person Jonathan; 12.06.2016

Я вижу здесь несколько проблем. Вам нужно будет избегать внутренних двойных кавычек или лучше использовать одинарные кавычки для строк снаружи.

    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>';
     }
   }
person irimawi    schedule 12.06.2016