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

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

本文关键字:Javascript 抵消 If 语句 多个      更新时间:2023-09-26

我在一段需要多行"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 语句运行良好。第二个似乎根本没有运行。第三个运行良好。

如果我重新订购第二个和第三个交换位置,新的第二个将不起作用。

如果我使用 or 运算符"||"并组合语句,它根本不起作用。

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

如果我同时进行第二个和第三个 if 或语句,那么两者都不起作用。

有什么想法吗?

我正在销售队伍的视觉力量页面上使用它,如果这有什么不同的话。

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