将innerHTML与querySelectorAll一起使用

问题描述 投票:4回答:3

我想在重新提交尝试时使用类似于以下内容的方法来清除表单中的错误:

document.querySelectorAll("#form-error-name, #form-error-email, #form-error-tel, #form-error-dob, #form-error-password, #form-error-goal").innerHTML= "";

...但是div的内容没有被清除。我究竟做错了什么?

javascript
3个回答
2
投票

你需要循环结果

    var errors = document.querySelectorAll(
               "#form-error-name, 
                #form-error-email, 
                #form-error-tel, 
                #form-error-dob, 
                #form-error-password, 
                #form-error-goal");

[].forEach.call(errors, function(error) {
  error.innerHTML = '';
});

querySelectorAll不会返回一个数组,而是一个节点列表,它的原型上没有forEach方法。

上面的循环是在nodeList对象上的数组对象的原型上使用forEach方法。


4
投票

试试这个:

var x = document.querySelectorAll("#form-error-name, #form-error-email, #form-error-tel");
var i;
for (i = 0; i < x.length; i++) {
    x[i].innerHTML = "";
}

看,如果这有帮助。


0
投票

适当的现代答案是

[... document.querySelectorAll('input')].map(i => i.value = '');
© www.soinside.com 2019 - 2024. All rights reserved.