javascript - 如何修复按钮不添加新的 <li>

标签 javascript

我只是在单击“添加新项目”按钮时遇到问题,javascript 不会为我添加新行 (<li>)<ul>

我尝试为<ul>创建一个变量其中 id="change"document.getElementById("change");

另一方面,我刚刚向此变量添加了一个“addEventListener”,因此当我单击此按钮时,名为“achange”的函数将开始工作,并向 <ul> 添加新行

var icounter = 1;
var c = document.getElementById("change");
c.addEventListener("click", achange);

function achange() {
  ulist.innerHTML += "<li> New Item " + icounter + "</li>";
}
<h1 id="header"> List that contains items. </h1>
<button id="change">Add New Item </button>
<ul type="square" id="ulist">
  <li> Pizza </li>
  <hr align="left" width="20%">
  <li> Burger </li>
  <hr align="left" width="20%">
  <li> Chicken Dinner </li>
  <hr align="left" width="20%">
  <li> Salad </li>
  <hr align="left" width="20%">
</ul>

我希望添加一行内容: "New Item 0" ,但没有任何反应,任何帮助将不胜感激。 谢谢

最佳答案

你在错误的时间得到了东西。我还建议采用不同的方式附加项目,而不是将文本附加到 innerHTML 中。

在您的函数中(当您添加项目时),您需要获取对 ul 的引用并从那里附加子项。这也使您有机会获得用于对下一项进行编号的 li 计数(如果您愿意)

此外,正如其他人指出的那样,并非所有浏览器都支持您尝试使用 ulist 执行的 id 引用

这里要提到的另一件事是 hr 不是 ul 的有效后代。如果您确实想要 hr,您应该使用 css 或将 hr 放入 li ( Is anything except LI's allowed in a UL? )

const addNewItem = () => {
  const list = document.getElementById('ulist');
  const liCount = list.querySelectorAll('li').length;
  const hr = document.createElement('hr');
  hr.setAttribute('align', 'left');
  hr.setAttribute('width', '20%');
  const newLi = document.createElement('li');
  newLi.innerText = `Item # ${liCount + 1}`;
  newLi.append(hr);
  list.appendChild(newLi);
};

document.getElementById('change').addEventListener('click', addNewItem);
<h1 id="header"> List that contains items. </h1>
<button id="change">Add New Item </button>
<ul type="square" id="ulist">
<li> Pizza </li> <hr align="left" width="20%">
<li> Burger </li> <hr align="left" width="20%"> 
<li> Chicken Dinner </li> <hr align="left" width="20%">
<li> Salad </li> <hr align="left" width="20%">
</ul>

关于javascript - 如何修复按钮不添加新的 <li>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54245329/

相关文章:

Javascript 不会在浏览器中显示

javascript - onRowClicked 用于 react 数据表

javascript - ajax, jquery with mysql query in js - 这可能吗?

javascript - ExtJS - 在多个存储中保存数据

JavaScript:基于用户响应的 JSON 条件

javascript - 如何对 Ul 和 Li div 数据进行排序

javascript - 删除 Internet Explorer 中的事件监听器

javascript - 如何使用 mapbox.js 在具有指定半径值的标记周围绘制圆圈

javascript - 获取后新保存的 Backbone 模型未出现在集合中

javascript - 在 slidedown() 之后设置元素的高度