首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript创建动态列表

使用javascript创建动态列表
EN

Stack Overflow用户
提问于 2021-07-15 20:57:54
回答 1查看 70关注 0票数 0

我已经创建了一个简单的待办事项列表,它接受输入的值并将其放在div中,并将一些类附加到它们,一切都很好,但我如何修复for循环并使其每次工作,并在每个div下添加多个div,而不是更改现有的div。这是我的密码:

代码语言:javascript
复制
    let dynamicList = document.querySelector("#dynamic-list"),
    dynamicDiv = document.createElement("div"),
    dynamicClass = document.querySelector(".dynamic"),
    circle = document.querySelector(".circle"),
    paragraphTest = document.createElement("p"),
    circleTest = document.createElement("div");

input.addEventListener("keypress", function(e){
    value = input.value
    if(e.key == "Enter"){
        for(i=0; i<=dynamicList.children.length; i++){
            dynamicList.insertBefore(dynamicDiv, dynamicClass.nextSibling)
            let sibling = dynamicClass.nextSibling;
            sibling.classList.add("dynamic")
            sibling.appendChild(circleTest)
            circleTest.classList.add("circle")
            sibling.appendChild(paragraphTest)
            paragraphTest.innerHTML = input.value
        }
        
})
代码语言:javascript
复制
    <div id="dynamic-list">
      <div class="dynamic"><div class="circle"></div><p class="paragraph">some dummy text/p></div>
    </div> 

我的意思是:

https://imgur.com/a/Zgm48ze

这就是当我添加文本时所发生的事情,它运行得非常完美。但是,当我添加另一个文本时,它将覆盖第一个文本,而不是添加另一个div。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-15 21:24:47

每次创建该元素时都应该使用createElement方法。只要使用它一次,它将只创建一个,因此,如果您更改它的属性,您将编辑第一个元素(已经创建的唯一元素)。

所以代码应该是这样写的:

代码语言:javascript
复制
let dynamicList = document.querySelector("#dynamic-list"),
  dynamicClass = document.querySelector(".dynamic"),
  circle = document.querySelector(".circle");


input.addEventListener("keypress", function(e) {
  value = input.value
  if (e.key == "Enter") {
    const paragraphTest = document.createElement("p"),
      dynamicDiv = document.createElement("div"),
      circleTest = document.createElement("div");
    for (i = 0; i <= dynamicList.children.length; i++) {
      dynamicList.insertBefore(dynamicDiv, dynamicClass.nextSibling)
      let sibling = dynamicClass.nextSibling;
      sibling.classList.add("dynamic")
      sibling.appendChild(circleTest)
      circleTest.classList.add("circle")
      sibling.appendChild(paragraphTest)
      paragraphTest.innerHTML = input.value
    }

  }
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68400684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档