Я новичок в JS, так что терпите меня; Я даже не уверен, правильно ли я ищу ответ, но я не смог заставить его работать после нескольких часов поиска и поиска.
У меня есть таблица HTML, и пользователь нажимает на строку. Я могу получить элемент, на который нажали, вот так:
var elem = document.elementFromPoint(e.clientX, e.clientY);
Я также могу получить строку следующим образом:
var tr = elem.closest("tr");
Теперь я хочу построить массив пар имя / значение из ячеек, где имя - это имя поля данных, а значение - внутренний текст ячейки, поэтому я делаю это:
var set = [];
$.each(tr.cells, function(cell) {
set.push({name : cell.dataset.field, value : cell.innerText});
});
Но я получаю эту ошибку:
Uncaught TypeError: Невозможно прочитать свойство 'field' из неопределенного
в HTMLTableCellElement. (1: 80)
в Function.each (jquery.min.js: 2)
в: 1: 17
Вот как это выглядит в консоли инструментов Chrome dev:
Вот часы на tr
, где выделенная часть показывает field
, который я ищу.
Я почти уверен, что смогу превратить массив пар имя / значение в объект после того, как получу его, например. с JSON.parse()
или чем-то.
Так что не так с моим кодом или моим подходом? Есть ли более лаконичный или более эффективный способ сделать то, что я пытаюсь сделать?