使用 getElementById 将 div 的 innerHTML 设置为 = 多个数组项

Set innerHTML of a div to = multiple array items using getElementById

我正试图以 html <div id="animal"> Dog Cat Horse </div> 结束,但我不知道如何将多个数组元素组合成一个 innerHTML。我正在尝试这样的事情:

var myArray = [
  ['Dog', 'Terrier'],
  ['Cat', 'Tabby'],
  ['Horse', 'Shetland'],
];

for (i = 0; i < myArray.length; i++) {
  document.getElementById('animal').innerHTML = locations[i][0];
};
    <div id="animal"> animal names here </div>

当您使用 innerHTML = 时,它会替换元素中的所有 HTML。您也需要使用 += 添加到内部 HTML.

for (i = 0; i < myArray.length; i++) {
    document.getElementById('animal').innerHTML+= ' ' + myArray[i][0]; 
}

您目前每次迭代都会覆盖 #animal 的内容,因此仅显示最后一项。您需要连接 #animalinnerHTML,以便新项目附加到现有的 html。另请注意,您可以添加额外的 HTML(例如 <br/> 标记以拆分行以提高可读性。

var myArray = [
  ['Dog', 'Terrier'],
  ['Cat', 'Tabby'],
  ['Horse', 'Shetland'],
];

for (i = 0; i < myArray.length; i++) {
  document.getElementById('animal').innerHTML += myArray[i][0] + "</br>";
};
    <div id="animal"></div>

最后,用于输出动物的标记看起来像是 ordered/unordered 列表的工作。此外,正如@kb 指出的那样,最好采用更现代和惯用的方法并使用 .map and as @ gcampbell pointed out, insertAdjacentHTMLinnerHTML

更快

var animals = [
  ['Dog', 'Terrier'],
  ['Cat', 'Tabby'],
  ['Horse', 'Shetland'],
];


var animalNames = animals.map(function(animal) {
    return "<li>" + animal[0] + "</li>";
  })
  .join("");

document.getElementById('animal').insertAdjacentHTML('beforebegin', animalNames);
<h3>Animals:</h3>
<ul id="animal"></ul>

您可以使用数组到字符串的转换

document.getElementById('animal').innerHTML = myArray.toString().replace(",", " ")

fiddle

尝试这样的事情:

var myArray = [
[ 'Dog' , 'Terrier'],
[ 'Cat' , 'Tabby' ],
[ 'Horse' , 'Shetland'],
];

var myStr;

mtStr =""

for (i = 0; i < myArray.length-1; i++) { 
    myStr += myArray[i];
 }

document.getElementById('animal').innerHTML= myStr;

您将在循环的每次迭代中替换 div 的内容。

理想的方法是创建一个数据字符串并将其附加到您 div 中。而不是在每次迭代中访问 dom

var myArray = [
  ['Dog', 'Terrier'],
  ['Cat', 'Tabby'],
  ['Horse', 'Shetland'],
];
var data = "";
for (i = 0; i < myArray.length; i++) {
  data += " " +  myArray[i][0];
};

document.getElementById('animal').innerHTML = data;
<div id="animal"> animal names here </div>