【问题标题】:Append Remove Button to Array List Item将删除按钮附加到数组列表项
【发布时间】:2018-11-06 03:16:34
【问题描述】:

我正在构建一个 JavaScript 待办事项列表,其中包含一个将输入值推送到数组中并将值和删除按钮附加到列表元素的函数。我已经实现了一个删除功能,经过反复试验并研究了该站点上的其他类似演示,似乎初始表达式“var lastid = 0”和增量表达式“lastid=+1”都可以点击特定的按钮以导致删除特定列表项。否则,如果没有该表达式,单击特定列表项的删除按钮会导致删除数组列表中最上面的项,而不是我要定位的项。有人可以向我解释一下初始表达式“var lastid = 0”和增量表达式“lastid=+1”是什么使删除函数能够针对特定的ID?

JS:

var array = [];
var lastid = 0;

  function add(){
    var task = document.getElementById("task").value;
    array.push(task);

    var text = document.createTextNode(task);
    var li = document.createElement("li");
    li.setAttribute('id','task'+lastid);
    var btn = document.createElement("button");
    btn.appendChild(document.createTextNode("x"));
    btn.setAttribute('onClick','remove("'+'task'+lastid+'")');
    li.appendChild(text);
    li.appendChild(btn);
    lastid=+1;
    document.getElementById("myUl").appendChild(li);
  };

  function remove(itemid){
    var task = document.getElementById(itemid);
    document.getElementById("myUl").removeChild(task);
  }

HTML:

<input id="task">
<button onclick="add()">add</button>
<ul id="myUl"></ul>

【问题讨论】:

    标签: javascript arrays list function


    【解决方案1】:

    小错误。 "lastid=+1" 不是递增而是赋值操作。您分配给 lastid 值“+1”。 数值前可以加符号。

    如果你想递增,你应该使用递增运算符“lastid+=1”

    其他选项。 如果您想删除当前项目而不增加元素 ID,您可以从全局对象“this.event”中获取当前元素。 例如,您可以这样修改您的删除功能:

    function remove(){
      var task = this.event.currentTarget.parentNode;
      document.getElementById("myUl").removeChild(task);
    }
    

    【讨论】:

    • 感谢您的反馈!我想我的意思是添加最后一个 +=1 而不是相反,谢谢你指出这一点。如果没有该增量运算符,单击(例如)列表项#4 的删除按钮会导致删除列表中最上面的项。那么,启用特定项目目标的增量运算符是什么?
    猜你喜欢
    • 2023-01-20
    • 2022-11-18
    • 2021-05-31
    • 2021-09-29
    • 2018-11-26
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 2018-05-21
    相关资源
    最近更新 更多