多个If语句相互取消? (JavaScript)的

时间:2016-02-10 21:06:01

标签: javascript jquery if-statement salesforce

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

其中两个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语句的条件如何,第三个语句总是有效。

如果我做第二个和第三个if或者声明那么两个都不起作用。

有什么想法吗?

我在salesforce中的visualforce页面上使用它,如果这有任何区别的话。

1 个答案:

答案 0 :(得分: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");
}