多个 If 语句相互抵消? (Javascript)

Multiple If Statements Cancelling each-other out? (Javascript)

我在处理一段需要多行 "if" 逻辑来处理功能的代码时遇到了一些麻烦。

其中两个 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';

}

第一个 if 语句 运行 没问题。第二个似乎 运行 根本没有。第三个运行没问题

如果我重新排序第二个和第三个交换位置,新的第二个将无法使用。

如果我使用或运算符“||”并结合它根本不起作用的语句。

无论 if 语句的条件如何,第三个语句始终有效。

如果我使第二个和第三个都是 if 或语句,则两者都不起作用。

有什么想法吗?

我正在 salesforce 的 visualforce 页面上使用它,如果有任何不同的话。

首先,请注意 DOMElement 没有 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");
}