为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过文本根据订单号删除特定的 Li 标签?

如何通过文本根据订单号删除特定的 Li 标签?

函数式编程 2023-07-20 17:19:48
我一直在尝试找出如何删除特定的“li”标签,方法是根据其在列表中的位置输入其编号(即在文本框中输入 3,然后按按钮删除列表位置 3 中的项目) )。现在我的代码是这样的,即使只列出了 4 个项目,输入 5 并按 Enter 键仍然会删除 2 个项目,而不是不删除任何项目。我的代码编写方式与删除特定“li”标签时键入的数字不一致。任何帮助将不胜感激,谢谢。<html><head><title>Chapter 5 Activity</title></head><body><h1>The Best Fruit in the World</h1><ol id="fruit">  <li>Mangos</li>  <li>Watermelons</li>  <li>Kiwis</li>  <li>Pineapples</li></ol><form action=""><input type="text" name="rfruit" id="fruitremove">  <input type="button" value="Click to Remove" onclick="removefruit()">  Remove fruit you dislike</form><script type="text/javascript">function removefruit(){  var fruitminus = document.getElementById("fruitremove").value;  var flist = document.getElementById("fruit");  flist.removeChild(flist.childNodes[fruitminus]);}</script></body></html>
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

出现问题是因为在您的情况下为您创建的 NodeList 的flist长度为 8。这是因为每个列表元素创建 2 个元素(一个是文本,一个是 li)。因此,只需在删除子节点之前添加一个 if 条件,如下所示:

if(fruitminus < (flist.childNodes.length)/2)
    flist.removeChild(flist.childNodes[2*fruitminus - 1]);

li 的索引出现在 NodeList 中的奇数位置,这就是为什么我们需要删除该位置的 childNode。


查看完整回答
反对 回复 2023-07-20
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信