多个 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");
}
我在处理一段需要多行 "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");
}