最近我重构了我早期编写 ES5 的项目之一。有些部分我必须使用 document.getElementById(id) 通过它们的 id 检索 DOM 元素
然后我使用 ES6 代理重构了代码。例如,我有一个 html 文件,其中包含
<div class="bottom">
<div class="add">
<div class="add__container">
<select class="add__type" id="addType">
<option value="inc" selected>+</option>
<option value="exp">-</option>
</select>
<input type="text" class="add__description" id="addDescription" placeholder="Add description">
<input type="number" class="add__value" id="addValue" placeholder="Value">
<button class="add__btn" id="addButton">
<i class="ion-ios-checkmark-outline"></i>
</button>
</div>
</div>
然后我使用代理来检索这样的 DOM
const {
addType,
addDescription,
addValue,
addButton,
budgetContainer,
budgetIncomeList,
budgetExpensesList,
budgetValue,
budgetIncomeValue,
budgetExpensesValue,
budgetExpensesPercentage,
monthLabel,
} = new Proxy({}, { get(_, id) { return document.getElementById(id); } });
它有效,但我想知道这是否是检索 DOM 元素的好习惯。
我也刚刚发现,在我注释掉代码的检索部分后,即上面使用代理的代码段。我仍然可以直接使用它们的 ID 访问我的 Js 文件中的 DOM 元素,而无需定义它们!我以前对此一无所知。
抱歉,我知道这看起来像是两个不同的问题,但我真的希望你们能分享一些关于这些的知识。