我是编程的新手,所以我不太了解,但我想知道是否有永久禁用按钮的方法。我用过这个:
document.getElementById("WhateverTheIdIs").disabled = true;
但是在文档的某些部分我反过来说:
document.getElementById("WhateverTheIdIs").disabled = false;
我需要能够覆盖它的东西,并且只是永久禁用按钮。有没有办法做到这一点?
答案 0 :(得分:1)
你试图将过多的逻辑推入DOM中。这是非常糟糕的做法。确保您的数据模型与您正在建模的数据模型匹配。有一个布尔值:all_buttons_are_disabled
然后一个布尔button_X_is_disabled
然后执行类似的操作:
function updateButtonX() {
document.getElementById("WhateverTheIdIs").disabled =
all_buttons_are_disabled || button_X_is_disabled;
}
toggleX
将停用/启用buttonX
,但当您按disable all
时,所有按钮都会被永久禁用。
答案 1 :(得分:1)
只有一种方法可以禁用或启用按钮。因此,如果您正在寻找一种永久禁用按钮(但保持可见状态)的单独方式,它会将设置.disabled
覆盖为true - 按钮没有此类属性或功能。
修复代码的方法有很多种。例如,当您要永久禁用按钮时,可以在按钮上设置自定义属性,然后在您考虑启用按钮的任何位置,您只需检查该自定义属性,如果已设置,则不要启用该按钮。
您可以考虑的其他选项是隐藏按钮或从DOM中删除按钮。
您可以通过在自己的代码中进行永久禁用来修复代码。如果您不是直接操作.disabled
属性,而是切换到使用这些函数,那么您的代码将尊重.permDisabled
属性。
function getElem(elem) {
if (typeof elem === "string") {
elem = document.getElementById(elem);
}
return elem;
}
function disableButtonPermanent(elem) {
elem = getElem(elem);
elem.disabled = true;
elem.permDisabled = true;
}
function disableButton(elem) {
elem = getElem(elem);
elem.disabled = true;
}
function enableButton(elem) {
elem = getElem(elem);
if (!elem.permDisabled) {
elem.disabled = false;
}
}