2016-02-10 4 views
0

У меня возникли проблемы с фрагментом кода, который требует нескольких строк логики «если» для обработки функциональности.Множественные, если заявления отменяют друг друга? (Javascript)

два из этих утверждений if, делают то же самое, и мне кажется, некоторые из них отменяют друг друга.

function visibleCheck() { 

    var target = document.getElementById('contentType').val(); 

    if (target != "BYOC - Document to Exam") { 
     document.getElementById('VideoMinutes').style.display = 'block'; 
    } 
    else document.getElementById('VideoMinutes').style.display = 'none'; 

    if ((target != "Custom Production - Avatar") { 
     document.getElementById('Questions').style.display = 'block'; 
    } 
    else document.getElementById('Questions').style.display = 'none'; 

    if ((target != "Custom Production - Video") { 
     document.getElementById('Questions').style.display = 'block'; 
    } 
    else document.getElementById('Questions').style.display = 'none'; 

} 

Операция First if выполняется нормально. Второй не работает вообще. Третий работает отлично.

Если я переупорядочу второй и третий места обмена, новый второй не будет работать.

Если я использую оператор "||" и объединить заявления, которые он не работает вообще.

Третье утверждение всегда работает независимо от условий для оператора if.

Если я делаю второй и третий оба, если или утверждения, то не работают.

Любые идеи?

Я использую это на странице visualforce в salesforce, если это имеет значение.

+1

Вы смотрели в использовании '-то еще if'statements? –

+0

@BrettDeWoody Я не думал об этом, потому что их уже три, и может быть и больше. Как вы думаете, это может изменить ситуацию? –

+0

И/или оператор 'switch()' ([MDN docs] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)). –

ответ

2

Во-первых, обратите внимание, что DOMElements не имеют метода val(), это только для объектов jQuery. Вы должны использовать свойство value.

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

function visibleCheck() { 
    var target = document.getElementById('contentType').value; 

    if (target != "BYOC - Document to Exam") { 
     document.getElementById('VideoMinutes').style.display = 'block'; 
    } 
    else { 
     document.getElementById('VideoMinutes').style.display = 'none'; 
    } 

    if (target != "Custom Production - Avatar" && target != "Custom Production - Video") { 
     document.getElementById('Questions').style.display = 'block'; 
    } 
    else { 
     document.getElementById('Questions').style.display = 'none'; 
    } 
} 

Как вы добавили это с JQuery, вот упрощенная версия JQuery:

function visibleCheck() { 
    var target = $('#contentType').val(); 
    $('#VideoMinutes').toggle(target != 'BYOC - Document to Exam'); 
    $('#Questions').toggle(target != "Custom Production - Avatar" && target != "Custom Production - Video"); 
} 
+0

Я действительно скопировал более старую версию кода, но ваша упрощенная версия отлично работает, спасибо! –

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