如何使用 getElementById 和 innerHTML 将此数组制作成列表?
How do I make this array into a list using getElementById and innerHTML?
我需要使数组 'places' 在列表中显示其内容。我的问题是我的功能。我知道我做的不对。谁能帮忙?我需要使用 getElementsByTagName 吗?
<body>
<header>
<h1>
Hands-on Project 3-3
</h1>
</header>
<article>
<h2>Scouting Locations</h2>
<div id="results">
<ul>
<li id="item1"></li>
<li id="item2"></li>
<li id="item3"></li>
<li id="item4"></li>
<li id="item5"></li>
</ul>
</div>
</article>
<script>
var places = ["Philadelphia", "New York", "Los Angles", "Austin", "Kansas City"];
function processPlaces() {
for (i = 0, i < 5, i++) {
var listItem = "item" + (i + 1);
document.getElementById(listItem).innerHTML = places[i];
}
}
if (window.addEventListener) {
window.addEventListener("load", processPlaces, false);
} else if (window.attachEvent) {
window.attachEvent("onload", processPlaces);
}
</script>
</body>
你可以获取包含 div results
并创建一个 ul
像这样 var locations = $('<ul>')
然后创建一个循环遍历你的数组并在每次迭代中创建的函数a li
及其内容,然后将其附加到 ul,最后将 ul 附加到容器 div。这是 jQuery 中的粗略版本。 JS 中的相同概念略有不同的语法。
var results = $('#results');
var list = $('<ul>');
function processPlaces() {
for (i = 0; i < 5; i++) {
var listItem = $('<li>');
listItem.text(places[i]);
list.append(listItem);
}
results.append(list);
}
这种动态方法可能更好,这样当您向数组添加内容时,您不需要返回到 html 并每次手动添加更多 li
。
您的问题是您在 for
循环中使用逗号 ,
而不是分号 ;
:
for (i = 0, i < 5, i++) {
应该是:
for (var i = 0; i < 5; i++) {
注意:我插入了var
关键字,因为最好在循环内声明变量,避免在全局上下文中隐式声明i
。
纯正解:
可以通过 <div>
:
的 id 访问列表项
<div id="results">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
访问列表 children
:
var results = document.getElementById("results");
var lists = results.children[0].children;
Lists
是一个包含所有 <li>
元素的 HTML 集合 。
访问 全部 <li>
:
for(var i = 0; i < lists.length; i += 1) {
lists[i].innerHTML = places[i];
}
我需要使数组 'places' 在列表中显示其内容。我的问题是我的功能。我知道我做的不对。谁能帮忙?我需要使用 getElementsByTagName 吗?
<body>
<header>
<h1>
Hands-on Project 3-3
</h1>
</header>
<article>
<h2>Scouting Locations</h2>
<div id="results">
<ul>
<li id="item1"></li>
<li id="item2"></li>
<li id="item3"></li>
<li id="item4"></li>
<li id="item5"></li>
</ul>
</div>
</article>
<script>
var places = ["Philadelphia", "New York", "Los Angles", "Austin", "Kansas City"];
function processPlaces() {
for (i = 0, i < 5, i++) {
var listItem = "item" + (i + 1);
document.getElementById(listItem).innerHTML = places[i];
}
}
if (window.addEventListener) {
window.addEventListener("load", processPlaces, false);
} else if (window.attachEvent) {
window.attachEvent("onload", processPlaces);
}
</script>
</body>
你可以获取包含 div results
并创建一个 ul
像这样 var locations = $('<ul>')
然后创建一个循环遍历你的数组并在每次迭代中创建的函数a li
及其内容,然后将其附加到 ul,最后将 ul 附加到容器 div。这是 jQuery 中的粗略版本。 JS 中的相同概念略有不同的语法。
var results = $('#results');
var list = $('<ul>');
function processPlaces() {
for (i = 0; i < 5; i++) {
var listItem = $('<li>');
listItem.text(places[i]);
list.append(listItem);
}
results.append(list);
}
这种动态方法可能更好,这样当您向数组添加内容时,您不需要返回到 html 并每次手动添加更多 li
。
您的问题是您在 for
循环中使用逗号 ,
而不是分号 ;
:
for (i = 0, i < 5, i++) {
应该是:
for (var i = 0; i < 5; i++) {
注意:我插入了var
关键字,因为最好在循环内声明变量,避免在全局上下文中隐式声明i
。
纯正解:
可以通过 <div>
:
<div id="results">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
访问列表 children
:
var results = document.getElementById("results");
var lists = results.children[0].children;
Lists
是一个包含所有 <li>
元素的 HTML 集合 。
访问 全部 <li>
:
for(var i = 0; i < lists.length; i += 1) {
lists[i].innerHTML = places[i];
}