for 循环运行两次(数组内的对象)

For loop running twice (object inside of an array)

提问人:AhsinSharif 提问时间:7/13/2023 最后编辑:Tamir AbutbulAhsinSharif 更新时间:7/13/2023 访问量:32

问:

我正在建立一个待办事项清单。

当用户输入内容并选择日期时填充列表的部分是这样的:

const renderToDoList = () => {

    displayStuffJS.innerHTML = ''
    for (let i = 0; i <= toDoList.length - 1; i ++){

        
        let toDoObject = toDoList[i];
        let input = toDoObject.input
        let date = toDoObject.date
        html = `<p style = 'display: inline-block;'>` + input + date +
        '<button onclick = "deleteEntry(' + i + ')">Delete</button> + </p>';
        displayStuffJS.innerHTML += HTML;
         
           

        }
    }

数组(里面有一个对象)在这里将数据放入其中:

const pushToList = () => {


        displayStuffJS.innerHTML = "";
        toDoList.push([{
            input: inputValue.value, // the input where they put their entry
            date: getDate.value // the value of the date chosen

        }])
        inputValue.value =""; 
        getDate.value = "";


        renderToDoList();
    }

当我运行此代码时,输入一些东西,选择一个日期并单击添加,它向我显示发生了两个循环,用两个对象填充数组,第一个对象是输入和日期的“”,数组中的第二个索引是带有我选择的输入和日期的对象。

在此处输入图像描述

它还会弹出两个删除按钮,但是当我单击它们时,它们都可以工作并删除所有内容。

现在很卡住了,已经坚持了一个小时,我所做的一切都不起作用。我只断断续续地编程了几个星期。

我尝试了几个随机的东西,但没有任何效果。

JavaScript 数组循环 for 循环 对象

评论

1赞 Unmitigated 7/13/2023
请同时发布您的 HTML 并提供一个最小的可重复示例,最好是作为堆栈代码段。
0赞 Chris G 7/13/2023
在您发布的内容中没有看到 2 个循环。发布您的实际 HTML,创建一个工作片段,而不是图像

答:

1赞 display_name 7/13/2023 #1

您正在推送一个包含对象的数组,而不仅仅是将对象直接推入 toDoList 数组。这就是为什么你最终在数组中得到两个对象的原因。

const pushToList = () => {
  displayStuffJS.innerHTML = "";
  toDoList.push({
    input: inputValue.value,
    date: getDate.value
  });
  inputValue.value = "";
  getDate.value = "";
  renderToDoList();
}

这应该可以解决问题。