Где ошибка в JS?

296
29 июля 2017, 07:44

Где ошибка в скрипте ? При воспроизведении мои переменные 100% равны , но он не работает(

<script>
if(1 == 1) {}
else if(2 == 2) {
var select = document.getElementById("myselect");
select.removeChild(select.getElementById("myoption"));
};
</script>
Answer 1

во первых если a = 1 то else if не выполняется. Во вторых метод getElementById есть только у document, а у select его не будет зато есть querySelector. А чтобы проверить 2 переменные есть &&.

let a = 1; 
let b = 2; 
if (a == 1 && b == 2) { 
  var select = document.getElementById("myselect"); 
  select.removeChild(select.querySelector("#myoption")); 
}
<select id="myselect"> 
<option>weqweqwe</option> 
<option>yrytrtyr</option> 
<option id="myoption">qweqweqq</option> 
<option>adasdasd</option> 
</select>

Answer 2

Попробуй так

if(2 == 2 && 1 == 1) { 
     var select = document.getElementById("myselect"); 
     select.removeChild(document.getElementById("myoption")); 
    };
<p>1</p> 
<p>2</p> 
<div id="myselect"> 
<p>3</p> 
<p id="myoption">123</p> 
</div> 
<p>4</p>

Answer 3

Не лишним будет объяснить логику работы вашего кода (а конкретно - работу условных операторов) с помощью псевдокода.

Ваш код

<script>
if(a == 1) {}
else if(b == 2) {
    var select = document.getElementById("myselect");
    select.removeChild(select.getElementById("myoption"));
};
</script>

Псевдокод

<script>
Если ( a равно 1) то {Делаем действие} // где { и } служат границами действия одного оператора
Иначе, если (b равно 2) то { // Здесь уже идёт проверка, только если в предыдущем if условие не соблюдается
    var select = document.getElementById("myselect");
    select.removeChild(select.getElementById("myoption"));
};
<script>

Примеры работы условных операторов

let a = 1; 
let b = 2; 
if (a == 1) { 
  document.getElementById("myselect").innerHTML="Текст 1"; 
} 
else if (b == 2) { 
  document.getElementById("myselect").innerHTML="Текст 2"; 
} 
else { 
  document.getElementById("myselect").innerHTML="Текст 3"; 
};
<p id="myselect">Привет Мир!</p>

let a = 2; 
let b = 2; 
if (a == 1) { 
  document.getElementById("myselect").innerHTML="Текст 1"; 
} 
else if (b == 2) { 
  document.getElementById("myselect").innerHTML="Текст 2"; 
} 
else { 
  document.getElementById("myselect").innerHTML="Текст 3"; 
};
<p id="myselect">Привет Мир!</p>

let a = 2; 
let b = 3; 
if (a == 1) { 
  document.getElementById("myselect").innerHTML="Текст 1"; 
} 
else if (b == 2) { 
  document.getElementById("myselect").innerHTML="Текст 2"; 
} 
else { 
  document.getElementById("myselect").innerHTML="Текст 3"; 
};
<p id="myselect">Привет Мир!</p>

Условные операторы в операторах

let a = 1; 
let b = 2; 
if (a == 1) { //Если a равно 1 
  if (b == 1) { //Если b равно 1 
      document.getElementById("myselect").innerHTML="Текст 1"; 
  } 
  else if (b == 2) { //Иначе, если b равно 2 
      document.getElementById("myselect").innerHTML="Текст 2"; 
  } 
  else { //Иначе  
    document.getElementById("myselect").innerHTML="Текст 3"; 
  }; 
};
<p id="myselect">Привет Мир!</p>

Этот вариант можно записать другим способом:

let a = 1; 
let b = 2; 
if (a == 1 && b == 1) { 
    document.getElementById("myselect").innerHTML="Текст 1"; 
} 
else if (a == 1 && b == 2) { 
    document.getElementById("myselect").innerHTML="Текст 2"; 
} 
else if (a == 1) { 
    document.getElementById("myselect").innerHTML="Текст 3"; 
};
<p id="myselect">Привет Мир!</p>

Как решается ваша проблема

Выхода два (как в примере выше):

Можно так

<script>
let a = 1;
let b = 2;
if(a == 1 && b == 2){
    var select = document.getElementById("myselect");
    select.removeChild(select.getElementById("myoption"));
};
</script>

Или так

<script>
let a = 1;
let b = 2;
if(a == 1){
    if(b == 2){
         var select = document.getElementById("myselect");
         select.removeChild(select.getElementById("myoption"));
    };
};
</script>
READ ALSO
This в объекте с function declaration

This в объекте с function declaration

Добрый день, подскажите, пожалуйста, почему в первом случае this не работает? Спасибо!

303
JavaScript функция запускается один раз

JavaScript функция запускается один раз

Привет, есть пагинация, на сайте, например, при нажатии на одну из кнопок( их 10, допустим,) которые переключаются по страницам я подгружаю данные...

375
Вызов функции по клику на кнопку

Вызов функции по клику на кнопку

В эфире снова мои бестолковые вопросы, но все мы учимся, так что, пожалуйста, не вздыхайте и не делайте фейспалмы

386
Как сделать чтобы вернуло this[0]

Как сделать чтобы вернуло this[0]

Добрый день, мне нужно чтобы javascript вернул innerHTML 1ого элемента через функцию, но он почему-то это не делаетHTMLElement

283