如果 checbox/disable 元素无法正常工作
If checbox/disable element not working properly
我正在尝试制作一个脚本,这样如果您 check/uncheck 一个复选框输入,它将 enable/disable 一个目标输入文本框。我的代码 if 语句似乎无法正常运行,有时会同时触发两个 if,有时则根本不会触发。我已经完成调试并尝试了多种变体,但仍然无法正常工作。这是我所拥有的,非常感谢任何帮助!
function disable(elem) {
var obj = document.getElementById(elem);
status = obj.disabled;
console.log(status);
if (status = true) {
console.log("test");
obj.disabled = false;
obj.style.backgroundColor = "white";
}
if (status = false) {
console.log("test2");
obj.disabled = true;
obj.style.backgroundColor = "bfbfbf";
}
}
由于多种原因,此代码未表现出正确的行为。
第一个原因是您的 if 语句是内联的,而不是 if-else 形式。比较好的组织如下:
function disable(elem) {
var obj = document.getElementById(elem);
status = obj.disabled;
console.log(status);
if (status == true) {
console.log("test");
obj.disabled = false;
obj.style.backgroundColor = "white";
} else {
console.log("test2");
obj.disabled = true;
obj.style.backgroundColor = "#bfbfbf";
}
}
这意味着即使您正在检查的变量在块中的代码正在执行时发生变化,无论其新值如何,它都不会执行相对块中的代码。如您所见,如果在第一个 if 语句中的代码为 运行ning 时更改值,则两个控制块都可能变为 运行.
它运行不正常的第二个原因是您的 if 语句中的语法不正确。您当前正在使用 =
运算符,这意味着将变量设置为您要检查的内容。如果要以这种方式编写它们,则必须使用 ==
或 ===
相等性检查(后者是类型严格的)。更好的方法是通过检查值是否为真来完全省略该运算符,如下所示:
function disable(elem) {
var obj = document.getElementById(elem);
status = obj.disabled;
console.log(status);
if (status) {
console.log("test");
obj.disabled = false;
obj.style.backgroundColor = "white";
} else {
console.log("test2");
obj.disabled = true;
obj.style.backgroundColor = "#bfbfbf";
}
}
这应该会为您提供预期的控制行为 :) 如前所述,请确保正确设置值的格式(例如“#bfbfbf”而不是 "bfbfbf")
我正在尝试制作一个脚本,这样如果您 check/uncheck 一个复选框输入,它将 enable/disable 一个目标输入文本框。我的代码 if 语句似乎无法正常运行,有时会同时触发两个 if,有时则根本不会触发。我已经完成调试并尝试了多种变体,但仍然无法正常工作。这是我所拥有的,非常感谢任何帮助!
function disable(elem) {
var obj = document.getElementById(elem);
status = obj.disabled;
console.log(status);
if (status = true) {
console.log("test");
obj.disabled = false;
obj.style.backgroundColor = "white";
}
if (status = false) {
console.log("test2");
obj.disabled = true;
obj.style.backgroundColor = "bfbfbf";
}
}
由于多种原因,此代码未表现出正确的行为。
第一个原因是您的 if 语句是内联的,而不是 if-else 形式。比较好的组织如下:
function disable(elem) {
var obj = document.getElementById(elem);
status = obj.disabled;
console.log(status);
if (status == true) {
console.log("test");
obj.disabled = false;
obj.style.backgroundColor = "white";
} else {
console.log("test2");
obj.disabled = true;
obj.style.backgroundColor = "#bfbfbf";
}
}
这意味着即使您正在检查的变量在块中的代码正在执行时发生变化,无论其新值如何,它都不会执行相对块中的代码。如您所见,如果在第一个 if 语句中的代码为 运行ning 时更改值,则两个控制块都可能变为 运行.
它运行不正常的第二个原因是您的 if 语句中的语法不正确。您当前正在使用 =
运算符,这意味着将变量设置为您要检查的内容。如果要以这种方式编写它们,则必须使用 ==
或 ===
相等性检查(后者是类型严格的)。更好的方法是通过检查值是否为真来完全省略该运算符,如下所示:
function disable(elem) {
var obj = document.getElementById(elem);
status = obj.disabled;
console.log(status);
if (status) {
console.log("test");
obj.disabled = false;
obj.style.backgroundColor = "white";
} else {
console.log("test2");
obj.disabled = true;
obj.style.backgroundColor = "#bfbfbf";
}
}
这应该会为您提供预期的控制行为 :) 如前所述,请确保正确设置值的格式(例如“#bfbfbf”而不是 "bfbfbf")