2D-массив JS не может прочитать свойство undefined

Итак, у меня есть элементы массива, в которых всегда 7 столбцов. Используя предоставленный код, я могу отобразить каждый элемент массива без ошибок. Однако, когда я пытаюсь получить доступ к массиву в конце следующим образом:

<button onclick = "delete_item(items[i][6])">Delete</button>

Я получил:

Uncaught TypeError: Cannot read property '6' of undefined
    at HTMLButtonElement.onclick (account.php:64)
onclick @ account.php:64

Остальная часть моего кода:

for(i=0;i<items.length;i++){
                document.write('<div style = "border-style:solid;padding:15px;background-color:whitesmoke;"><img src = "'+items[i][5]+'" style = "width:8%"><br><b style = "font-size:20px;">'+items[i][0]+'</b><br>$'+items[i][1]+'<div style = "float:right"><a href = "item.php?itemid='+items[i][6]+'&itemname='+items[i][0]+'" style = "font-size:20px">Click Here for the Item Information</a></div><br>Seller: '+items[i][2]+'<br>Description: '+items[i][3]+'<br> <button onclick = "delete_item(items[i][6])">Delete</button></div>');
document.write('<br>');
                }

Кроме того, при использовании <button onclick = "delete_item(items[1][6])">Delete</button> вместо использования «i» все работает нормально. Что могло бы вызвать это, потому что не следует использовать i

по моему это 7 колонок. опечатка в вопросе

Tony Cicero 03.12.2018 06:35

покажите нам items

eag845 03.12.2018 06:36
stackoverflow.com/questions/750486/…
Teemu 03.12.2018 06:42

покажи что в массиве items приятель ..

Harshith Rai 03.12.2018 10:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
188
2

Ответы 2

Используйте это ниже, потому что в вашем снимке кода я не имею в виду index. Его трей, чтобы прочитать я кей из вашего массива, а это недоступно, попробуйте следующий код:

<button onclick = "delete_item(items["+i+"][6])">Delete</button>

дает мне Uncaught SyntaxError: Unexpected end of input

Tony Cicero 03.12.2018 07:01

Вы должны заключить переменную в кавычки:

'<button onclick = "delete_item(\''+items[i][6]+ '\')">Delete</button>'

let a = ["a","b","c","d","e","f","g"];
let b = ["x","b","c","d","e","f","y"];

let items = [a,b];

var delete_item = function(item){
	console.info("delete: " + item)
}

for (i = 0; i < items.length; i++) {
  document.write('<div style = "border-style:solid;padding:15px;background-color:whitesmoke;"><img style = "width:8%"><br><b style = "font-size:20px;">' + items[i][0] + '</b><br>$' + items[i][1] + '<div style = "float:right"></div><br>Seller: ' + items[i][2] + '<br>Description: ' + items[i][3] + '<br> <button onclick = "delete_item(\''+items[i][6]+ '\')">Delete</button></div>');
  document.write('<br>');
}

Также вы можете рассмотреть возможность использования document.createElement и addEventListener.

Другие вопросы по теме