如果目标为多个元素Id';使用Javascript创建,但找不到其中一个

如果目标为多个元素Id';使用Javascript创建,但找不到其中一个,javascript,html,css,Javascript,Html,Css,我正在尝试使用JavaScript将多个ID作为目标,以便禁用它们的输入字段。使用下面的脚本似乎很简单,但我注意到,在中间元素不存在的页面上,脚本并没有禁用第三个元素(就好像它在找不到第二个元素时停止工作一样) document.getElementById(“id_1”).disabled=true; document.getElementById(“id_2”).disabled=true; document.getElementById(“id_3”).disabled=true; 因

我正在尝试使用JavaScript将多个ID作为目标,以便禁用它们的输入字段。使用下面的脚本似乎很简单,但我注意到,在中间元素不存在的页面上,脚本并没有禁用第三个元素(就好像它在找不到第二个元素时停止工作一样)


document.getElementById(“id_1”).disabled=true;
document.getElementById(“id_2”).disabled=true;
document.getElementById(“id_3”).disabled=true;
因此,在所有3个ID都存在的页面上,脚本可以完美地工作。但在不存在“id_1”或“id_2”的页面上,即使存在其余元素,也不会禁用它们

有什么办法吗?请注意,我不能为每个页面创建单独的脚本,因为这将进入页脚,这对于所有页面都是相同的


谢谢

您应该首先测试是否存在,然后禁用它(如果存在)。我还将id放在一个数组中以简化代码

varids=['id_1'、'id_2'、'id_3'];
对于(变量i=0;i

您应该首先测试它是否存在,然后禁用它(如果存在)。我还将id放在一个数组中以简化代码

varids=['id_1'、'id_2'、'id_3'];
对于(变量i=0;i

这是因为
document.getElementById
在未找到元素时返回
null
,因此在尝试将禁用设置为null时,实际上会导致异常。当其中一个元素没有在DOM中设置时,就会出现这种情况。您需要做的是检查元素是否已正确找到,然后设置元素或循环所有元素。

这是因为
document.getElementById
在未找到元素时返回
null
,因此在尝试将禁用设置为null时,实际上会导致异常。当其中一个元素没有在DOM中设置时,就会出现这种情况。您需要做的是检查元素是否已正确找到,然后设置元素或循环所有元素。

TL;博士: 脚本停止工作的原因是,当您尝试禁用不存在的元素时,它会抛出一个错误

详细内容:
document.getElementById()
如果您试图查找的元素不存在(),则将返回
null

当您尝试在
null
上将
.disabled
属性设置为
true
时,JavaScript将抛出
TypeError
。除非您使用try/catch块处理该错误,否则它将导致脚本停止执行,并且后面的输入元素不会被禁用

解决方案 要解决此问题,您需要在尝试将元素设置为禁用之前检查元素是否确实是元素。大概是这样的:

var el = document.getElementById('id_1');

if ('null' !== typeof el) {
  el.disabled = true;
}
TL;博士: 脚本停止工作的原因是,当您尝试禁用不存在的元素时,它会抛出一个错误

详细内容:
document.getElementById()
如果您试图查找的元素不存在(),则将返回
null

当您尝试在
null
上将
.disabled
属性设置为
true
时,JavaScript将抛出
TypeError
。除非您使用try/catch块处理该错误,否则它将导致脚本停止执行,并且后面的输入元素不会被禁用

解决方案 要解决此问题,您需要在尝试将元素设置为禁用之前检查元素是否确实是元素。大概是这样的:

var el = document.getElementById('id_1');

if ('null' !== typeof el) {
  el.disabled = true;
}

@叶甫根甜,np@叶甫根甜,np!