我在使用需要多行"如果"的一段代码时遇到了一些麻烦。处理功能的逻辑。
其中两个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页面上使用它,如果这有任何区别的话。
答案 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");
}