如果目标为多个元素Id';使用Javascript创建,但找不到其中一个
我正在尝试使用JavaScript将多个ID作为目标,以便禁用它们的输入字段。使用下面的脚本似乎很简单,但我注意到,在中间元素不存在的页面上,脚本并没有禁用第三个元素(就好像它在找不到第二个元素时停止工作一样)如果目标为多个元素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; 因
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!