javascript - 是否可以通过按类名定位列表容器来附加列表项?
问题描述
我在 html 中有这个嵌套列表:
<ul>
<li > Group One(<span id = "amount1"> 0 </span>)
<ul class = "names"> </ul> </li>
<li> Group Two (<span id = "amount2"> 0 </span>)
<ul class = "names" > </ul> </li>
<li> Group Three (<span id = "amount3"> 0 </span>)
<ul class = "names"> </ul> </li>
<li> Group 4 (<span id = "amount4"> 0 </span>)
<ul class = "names"> </ul> </li>
</ul>
我想追加
当我尝试使用 Javascript 时,我的代码如下所示:
function newPerson (index,name) {
let li = document.createElement("li")
let t = document.createTextNode(name);
let u = li.appendChild(t)
document.getElementsByClassName("names")[index].appendChild(u)
}
function getNames () {
var group1= [JOHN DOE, MARY JANE, KAT WU]
var nameLower = group1[random].toLowerCase()
console.log (nameLower)
console.log (document.getElementsByClassName("names"))
newPerson(nameLower,0)
对于第 2 组,依此类推。按下按钮将触发 getNames 函数。
这种工作,但我的清单最终看起来像:
第 1 组 (3)
John Doemary Janekat Wu
第 2 组 (2)
Lina Lialex Cole
...ETC。我希望它在哪里
第 1 组 (3)
John Doe Mary Jane Kat Wu
第 2 组 (2)
Lina Li Alex Cole
控制台的名称总是正确的,但节点列表永远不会改变(不确定当我添加孩子时是否应该这样做)。
当我将列表元素直接添加到 HTML 时,格式是正确的,所以我认为这不是 CSS 问题。
我也试过:
function newPerson (index,name) {
let li = document.createElement("li")
let t = document.createTextNode(name);
let u = li.appendChild(t)
let v = document.getElementsByClassName("names")
v.[index].appendChild(u)
}
但这根本没有出现嵌套列表。我按班级选择的方式有问题吗?
我宁愿不使用 ID,因为我的列表很长,而且我的代码看起来已经够乱了,但是如果没有 ID,这不可能吗?
解决方案
您需要附加 createdli
而不是u
变量,所以使用
v[index].appendChild(li);
代替
v.[index].appendChild(u);
function newPerson(index, name) {
let li = document.createElement("li")
let t = document.createTextNode(name);
let u = li.appendChild(t)
let v = document.getElementsByClassName("names")
v[index].appendChild(li)
}
newPerson(2, 'Satpal')
<ul>
<li> Group One(<span id="amount1"> 0 </span>)
<ul class="names"> </ul>
</li>
<li> Group Two (<span id="amount2"> 0 </span>)
<ul class="names"> </ul>
</li>
<li> Group Three (<span id="amount3"> 0 </span>)
<ul class="names"> </ul>
</li>
<li> Group 4 (<span id="amount4"> 0 </span>)
<ul class="names"> </ul>
</li>
</ul>
推荐阅读
- if-statement - DAX 表达式 - 根据“时间”列中的时间确定“移位”列中的移位
- list - 在差异列表上执行成员检查,但是如何?
- r - 通过新功能传递图形参数
- elixir - Elixir 的 :binary.bin_to_list 原子无法正常工作
- python - 在命令提示符中安装 Tensorflow 时如何解决超时错误
- android - 毕加索中的 SSLHandshakeException(连接被对等方关闭),同时显示来自 firebase 存储的图像
- php - 通过 PHP 读取文件以进行访问控制有多昂贵
- flutter - 如果用户没有在 Flutter 中的固定时间内验证电子邮件,是否可以从 Firrebase auth 中删除用户帐户?
- mpi - 如何在 SLURM 的脚本文件中为不同的 mpi 执行设置可变数量的节点?
- angular - 主页上带有嵌套路由器的组件