【发布时间】:2021-08-07 12:32:14
【问题描述】:
我尝试从 html 中获取一些可能存在或不存在的元素。现在,如果我只是尝试
//previous code
document.getElementById("MyElement1").checked = false;
document.getElementById("MyElement2").checked = false;
...
//rest of the code
如果其中一个元素不存在,则其余代码将不会被执行。
我会做的
try {
document.getElementById("MyElement1").checked = false;
document.getElementById("MyElement2").checked = false;
...
} catch (e) {
console.log(e);
}
但据说你永远不应该使用 try...catch 来处理非严重错误。
如果其中一个元素不存在,是否有更优雅的方式让 javascript 忽略这行代码?
PS:如果这些元素之一不存在,则以下元素也不存在。因此,如果MyElement1 存在,而MyElement2 不存在,那么MyElement3、MyElement4 等也将不存在。
我还尽量避免使用大块代码,例如对这些元素中的每一个都使用 if
【问题讨论】:
-
你听说过 if 函数吗?只需检查元素是否存在 if(document.getElementById("MyElement1")) { document.getElementById("MyElement1").checked = false; }
-
这是一种不太优雅的解决方法
-
确保您的代码仅适用于存在的元素?我不确定你在这里想要什么样的优雅 - 问题是你试图与不存在的 DOM 交互(还没有?),所以......为什么要这样做?如果 DOM 不 存在,那么试图防止错误只是意味着您的代码中仍然存在问题 - 它不工作。充其量你让它不会抛出错误,但仍然没有做你想做的事。
-
您似乎根本不需要 ID。只需选中您的复选框并与页面上 的复选框进行交互:
document.querySelectorAll("input[type='checkbox']").forEach(input => { /* do stuff */}) -
首先将所有的日子归为一个类,然后用另一个类标记过去的日子,并使用
querySelectorAll收集所有有day类但没有过去类的元素。如果页面上没有特定元素,则根本不会收集它,不需要ids。
标签: javascript