首页 > 解决方案 > 在我的程序中有一个我无法检测到的错误

问题描述

好的,这是对我之前提出的关于数组的问题的跟进。事实证明你的回答很有帮助,但我的程序仍然无法运行。我将解释作业,然后发布代码,以便您了解问题所在。所以我有一个带有未排序汽车列表的 html 页面。每辆车都有一把钥匙、一个制造商和一个型号。页面底部有一个用于插入新车的表格和两个按钮。通过单击一个按钮,您需要使用插入的数据创建一个代表汽车的对象。该对象需要添加到全局数组中。还有另一个按钮,它的任务是将对象从全局数组的中间插入到 html 列表中(这就是我之前的问题所涉及的)。然后需要从数组中删除对象。如果数组为空,需要有一条消息以红色显示“数组为空”。这是我做的方式,但是有一条错误消息说“未捕获的类型错误:无法读取未定义的属性(读取'键')”请帮忙,我想知道你会怎么做。

let globalArray = [];

function add() {
    var key = document.querySelectorAll("input")[0];
    var manufacturer = document.querySelectorAll("input")[1];
    var model = document.querySelectorAll("input")[2];

    var car = {
        key: key.value,
        manufacturer: manufacturer.value,
        model: model.value 
    }
    globalArray.push(car);
}

function fill(){
    if (globalArray.length == 0){
        let msg = document.querySelector("p");
        msg.innerHTML = "The array is empty.";
        msg.style.color = "red";
    }

    else {
        if(globalArray.length % 2 == 0) {
            let list = document.querySelectorAll("ul");
            let li = document.createElement("li");
            li.innerHTML = `${globalArray[globalArray.length / 2 - 1].key} 
${globalArray[globalArray.length / 2 - 1].manufacturer} ${globalArray[globalArray.length / 2 - 1].model}`;
            lista.appendChild(li);
            globalni.splice(globalArray[globalArray.length / 2 - 1], 1);
        }
        else {
            let list = document.querySelectorAll("ul");
            let li = document.createElement("li");
            li.innerHTML = `${globalArray[Math.round(globalArray.length / 2)].key} ${globalArray[Math.round(globalArray.length / 2)].manufacturer} ${globalArray[Math.round(globalArray.length / 2)].model}`
            lista.appendChild(li);
            globalArray.splice(globalArray[Math.round(globalArray.length / 2)], 1);
        }
    }
}

标签: javascripthtmlarrays

解决方案


推荐阅读