为什么当我尝试在全局范围内声明让输入错误(let inputError),就像其他的let一样,或者在函数中的输入错误之前写上let,这个程序就不工作了?
let ul_var;
let shoppingArray = ["Mleko", "Jajka", "Piwo"];
let new_item_form_var;
>>>> let inputError; <<<< //without it works
document.addEventListener("DOMContentLoaded", () => {
ul_var = document.getElementById("shopping");
>>>> let <<<< inputError = document.getElementById('inputError');
new_item_form_var = document.getElementById("new_item_form");
new_item_form_var.addEventListener("submit", (event) => {
event.preventDefault();
let input = event.target.elements[0];
if (input.value.length > 2 && !input.value.startsWith(' ')) {
addListItem(input.value);
input.value = '';
input.classList.remove('input-danger');
inputError.innerText = '';
} else {
inputError.innerText = 'Nazwa nie spelnia kryteriow';
input.classList.add('input-danger')
}
});
for (let x of shoppingArray) {
addListItem(x);
}
});
function addListItem(y) {
let li_var = document.createElement("li");
li_var.innerText = y;
ul_var.appendChild(li_var);
}
如果你有一个 let inputError
那么你不能有另一个,因为你不能。申报 同一变量多次使用。你应该写。
let inputError;
document.addEventListener("DOMContentLoaded", () => {
ul_var = document.getElementById("shopping");
inputError = document.getElementById('inputError'); // no let
或者这样,如果你不使用 inputError
在事件监听器之外。
// no 'let inputError;'
document.addEventListener("DOMContentLoaded", () => {
ul_var = document.getElementById("shopping");
let inputError = document.getElementById('inputError');