2015-02-16 3 views
-1

Нажимая идентификатор элемента кнопки, переданный элементу функции PIG функции x и изменяя границу при нажатии, когда нет границы - на 2 пикселя, при нажатии еще раз - граница исчезает. Работает только в первом условии. Помоги пожалуйста.Функция работает только для первого условия

function PIG(x) { 

     if (!(document.getElementById(x).style.border = "none")) { 

      document.getElementById(x).style.border = "2px solid green"; 

     } 

     else if(!(document.getElementById(x).style.border = "2px solid green")){ 

      document.getElementById(x).style.border = "none"; 

     } 
    } 
+1

Примечание: использование CSS ... –

+1

'==' или '' === проверить равенство. '=' является присваиванием. У вас просто есть опечатка :( –

ответ

2

Вы используете оператор присваивания, когда вы должны использовать оператор сравнения:

if (!(document.getElementById(x).style.border = "none")) { 

Должно быть:

if (!(document.getElementById(x).style.border === "none")) { 
// --------------------------------------------^ 
+0

Это не работает –

+2

@ KonstantinKolasau Я вижу здесь логическую проблему: должен ли быть действительно '' 'оператор? Используя его, вы в основном имеете в виду« если есть граница, примените границу, если нет границы, удалите границу ». Удалите упомянутого оператора и посмотрите, работает ли он. Кроме того, вам, вероятно, не понадобится' else if', я думаю, 'else' хватит в вашем случае. – rhino

+0

@rhino Ваше право оператор '!' не должен быть там (после добавления сравнения), иначе они будут идти от 'none' до' none' или '2px solid green' до' 2px solid green' всегда. Другими словами, он никогда не будет выглядеть другой, кроме mabye при первом вызове. –

0

Ваш если заявление не будет работать, как вы ожидаете!

if (!(document.getElementById(x).style.border = "none"))

Это будет изменения вашей границы никто не вместо проверки на границах значенияникому и разбивает много в вашей логике коды!

Исправьте это и запишите свои значения еще раз. Я уверен, что вы получите решение.

Фикс первый затем переписать/войти код: if (!(document.getElementById(x).style.border === "none"))

0

Первый, как уже указывалось наш вам нужно использовать оператор сравнения === кроме оператора присваивания =. Во-вторых у вас есть логическая ошибка в коде, обратите внимание, что ! означает не Так что это:

if (!(document.getElementById(x).style.border === "none")) { 

     document.getElementById(x).style.border = "2px solid green"; 

    } 

    else if(!(document.getElementById(x).style.border === "2px solid green")){ 

     document.getElementById(x).style.border = "none"; 

    } 

Средства:

/* 
If the border is NOT "none" (In other words it's likely solid green) 
    -> Make the border solid green 
Otherwise if the border is NOT solid green (In other words it's likely none) 
    -> Make the border none 
*/ 

Очевидно, что вы хотите, чтобы удалить «НЕ», поэтому удалить не операторы ! в вашем коде.

Here is a Fiddle Example

+0

Не работает, я удалил из кода –

+0

@ KonstantinKolasau. Каким образом он отлично работает в примере скрипки. –

Смежные вопросы