javascript - JS函数将项目添加到在 HTML 文件中
问题描述
我完全是初学者(学习了 1 周......并且在发疯之前已经考虑过退出:D)这是我的第一个问题,所以如果我做错了什么,请告诉我。我正在尝试解决一个关于使用 JS 函数将列表添加到 HTML 文件的小型 Javascript 练习。
我已经创建了这个功能,但它不起作用。我会说问题是我不知道如何在 ".createTextNode()" 中指示波段名称变量。
这是我在 JS 文件中的功能:
function addBands() {
for (i = 0, i < 0, i++) {
var banda = document.createElement("LI");
var nombre= document.createTextNode([0]);
banda.appendChild(nombre);
document.getElementById("band-list").appendChild(banda)
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1> MY FAVORITE BANDS</h1>
<ul id="band-list">
</ul>
<script src="exercisesJS.js"></script>
<script>addBands(['Dire Straits', 'Kansas', 'Steely Dan'])</script>
</body>
</html>
输出应该是一个列表,其中包含函数中 3 个波段的名称,或者任何其他波段(可以是 3 或 6 ...等...
解决方案
始终检查错误控制台。目前它告诉你
for (i = 0, i < 0, i++) {
是语法错误。你的意思是:
for (i = 0; i < 0; i++) {
这修复了语法。然而,这在逻辑上仍然是错误的,因为这意味着您的循环将永远不会运行(因为迭代器变量i
从 0 开始,并被告知在它低于0 时运行,这是一个从一开始就失败的条件。)
查看您的代码,还有其他问题。您将一组乐队名称传递给该函数,但该函数未设置为接收它。所以,我们需要:
function addBands(bands) {
这意味着函数的内部可以访问传递给它的内容。这也意味着我们可以将循环基于通过的带数,并使用迭代器带作为文本输出。
function addBands(bands) { //<-- receive incoming array
for (i = 0; i < bands.length; i++) { //iterate bands.length times
var banda = document.createElement("LI");
var nombre= document.createTextNode(bands[i]); //output iterator band name
banda.appendChild(nombre);
document.getElementById("band-list").appendChild(banda)
}
}
当我们在这里时,我们可以进行其他一些优化。ul
首先,每次循环运行时重新查找元素是没有意义的。所以让我们把它缓存在循环之外。其次,虽然createTextNode()
很好,但您可能有兴趣知道textContent
在父节点上使用它更容易。把它们放在一起:
function addBands(bands) { //<-- receive incoming array
let ul = document.getElementById("band-list"); //cache UL
for (i = 0; i < bands.length; i++) {
var banda = document.createElement("LI");
banda.textContent = bands[i];
ul.appendChild(banda)
}
}
推荐阅读
- python - 我们是否评估 cross_val_score 的准确性,然后评估测试数据的准确性?
- reactjs - Cannot connect component inside React Route to redux store
- javascript - 如何正确设置firebase身份验证?
- prolog - 序言中的爱因斯坦谜题
- c# - 如何在函数式编程中使用 StringBuilder?
- html - 选择非视网膜图像的响应图像,灯塔抱怨
- .net-core - QSEALC/QWAC .NET 库,用于识别 PSD2 API 通信中的参与者
- r - 我无法从数据集中的列中消除符号
- html - 如何控制标题文本中的间距?
- python - 从 While 循环创建语句并打印