Bueno chicos, esta es una continuación de una pregunta anterior que hice, sobre las matrices. Resulta que sus respuestas fueron muy útiles, pero mi programa sigue sin funcionar. Explicaré la tarea y luego publicaré el código, para que pueda ver cuál es el problema. Así que tengo una página html con una lista desordenada de autos. Cada coche tiene una llave, un fabricante y un modelo. Hay un formulario para insertar un coche nuevo en la parte inferior de la página y dos botones. Al hacer clic en un botón, debe crear un objeto, que representa un automóvil, con los datos que se insertaron. Ese objeto debe agregarse a una matriz global. Hay otro botón, que tiene la tarea de insertar el objeto desde el medio de la matriz global a la lista html (de eso se trataba mi pregunta anterior). Luego, el objeto debe eliminarse de la matriz. Si la matriz está vacía, debe haber un mensaje que diga "La matriz está vacía" en rojo. Esta es la forma en que lo hice, pero hay un mensaje de error que dice "Error de tipo no detectado: no se pueden leer las propiedades de undefined (leyendo 'clave')". Por favor, ayuda, quiero saber cómo harías esto.
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); } } }