Javascript 为整个类或数组更改innerHTML的最佳方法?

Javascript 为整个类或数组更改innerHTML的最佳方法?,javascript,arrays,for-loop,foreach,Javascript,Arrays,For Loop,Foreach,当我运行这段代码时,它正在更改所有的自愿者名称,并且只更改第一组其他项。循环后,它不会更改其他值。希望有人能帮我找到我的问题。我猜我不能用循环来做这个,也许需要用forEach?不确定如何正确地执行此操作。提前谢谢 编辑:我在下面看到这个控制台错误 未捕获的TypeError:无法读取null的属性“值” function invite() { for (index = 1; index >= volunteersName.length; index++) {

当我运行这段代码时,它正在更改所有的自愿者名称,并且只更改第一组其他项。循环后,它不会更改其他值。希望有人能帮我找到我的问题。我猜我不能用循环来做这个,也许需要用forEach?不确定如何正确地执行此操作。提前谢谢

编辑:我在下面看到这个控制台错误

未捕获的TypeError:无法读取null的属性“值”

function invite() {
    for (index = 1; index >= volunteersName.length; index++) {
            var names = [document.getElementById("volunteersName" + index).value];
            document.getElementById("name" + index).innerHTML = names
            document.querySelector(".organizationName2").innerHTML = document.getElementById("organizationName").value;
            document.querySelector(".eventDate2").innerHTML = document.getElementById("eventDate").value;
            document.querySelector(".websiteURL2").innerHTML = document.getElementById("websiteURL").value;
            document.querySelector(".hostName2").innerHTML = document.getElementById("hostName").value;
    }

问题在于循环语法

for (index = 1; index >= volunteersName.length; index++) {
这意味着只要
index
等于或大于数组长度,循环就应该运行

因此,除非数组中有1或0个项目,否则它将永远不会运行,因为
index
从1开始

改为:

for (index = 1; index <= volunteersName.length; index++) {

for(index=1;index而不是使用
querySelector
您可以使用
querySelectorAll
并遍历索引

function invite() {
    for (index = 1; index <= volunteersName.length; index++) {
            var names = [document.getElementById("volunteersName" + index).value];
            document.getElementById("name" + index).innerHTML = names
            document.querySelectorAll(".organizationName2")[index-1].innerHTML = document.getElementById("organizationName").value;
            document.querySelectorAll(".eventDate2")[index-1].innerHTML = document.getElementById("eventDate").value;
            document.querySelectorAll(".websiteURL2")[index-1].innerHTML = document.getElementById("websiteURL").value;
            document.querySelectorAll(".hostName2")[index-1].innerHTML = document.getElementById("hostName").value;
    }
函数邀请(){

对于(index=1;index好的,所以我让它在
querySelectorAll
答案中正常工作,但出于某种原因,我需要保留
index>=autonovatesName

下面是使其正确执行的代码

function invite() {
    for (index = 1; index >= volunteersName.length; index++) {
            var names = [document.getElementById("volunteersName" + index).value];
            document.getElementById("name" + index).innerHTML = names
            document.querySelectorAll(".organizationName2")[index-1].innerHTML = document.getElementById("organizationName").value;
            document.querySelectorAll(".eventDate2")[index-1].innerHTML = document.getElementById("eventDate").value;
            document.querySelectorAll(".websiteURL2")[index-1].innerHTML = document.getElementById("websiteURL").value;
            document.querySelectorAll(".hostName2")[index-1].innerHTML = document.getElementById("hostName").value;
    }

}

类的querySelector返回一个数组,您不能更改数组的innerHtml,您必须使用索引来更改类的innerHtml。您正在将
innerHtml
分配给一个数组。循环按原样运行。当我进行更改时,您说它停止了循环,并使
name
与另一个一样停止工作项。是的,但我不确定如何在没有循环的情况下正确更改数组的innerHTML。仍然不起作用:-/I正在获取
未捕获的TypeError:无法读取
var names=
行上null的属性“value”
,则DOM不包含您认为它包含的元素。特别是,没有ID匹配的元素“志愿者姓名”+索引
的当前值
我在回答中使用了代码,但仍然得到了相同的错误。我不确定它是如何插入正确的值的,但我得到了
未捕获的类型错误:无法读取null的属性“value”
仍然我只能重复:)该错误明确表示您的DOM不包含具有当前正在查找的ID的元素(在循环中)。请随时向上投票以获取所有帮助:-DIf如果您可以用小提琴或核心笔重新创建,我将演示您的问题。