Здравствуйте, поэтому, когда я пытаюсь получить элемент тело в JavaScript, я получаю сообщение об ошибке, что это нулевой. Но всякий раз, когда я использую тот же метод для получения элемента, но в другом файле, он работает отлично.
Я попытался получить элемент по идентификатору и классу, но ничего не работает.
Вот мой HTML:
<table class = "table table-striped" >
<thead>
<tr>
<th scope = "col">ID</th>
<th scope = "col">Name</th>
<th scope = "col">Photo</th>
<th scope = "col">Price</th>
<th scope = "col">Operation</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
И мой JS
data_base.body.appendChild(tr);
const data_base = {
body: document.getElementsByTagName("tbody")[0],
}
В разметке нет элемента с именем класса «информация» или «скрытие».
Да, я пробовал console.info, и это сработало.
Я просто не включил их, так как они не имеют отношения к моей проблеме.
@BahramGozalov Если они не связаны с вашей проблемой, то почему вы включили вызовы document.getElementsByClassName
, которые пытаются выбрать эти элементы? Редактировать свой пост и укажите минимальный воспроизводимый пример, пожалуйста.
добро пожаловать в бахрам stackoverflow, пожалуйста, убедитесь, что у вас есть тур по Как спросить и минимальный воспроизводимый пример, совершенно неясно, что вы пытаетесь здесь сделать.
"они не имеют отношения к моей проблеме" Хорошо, что тогда? Где именно вы пытаетесь получить доступ tbody
?
operation.setAttribute("click", "sitDown()");
смысла нет. Вы, скорее всего, имели в виду operation.addEventListener("click", sitDown);
.
Прочтите документация.
Убедитесь, что ваш сценарий не запущен до того, как элементы будут созданы.
Спасибо Теему! Это сработало
Кто-нибудь знает, как архивировать вопросы?
В последней строке newTable()
вы пытаетесь получить доступ к <tbody>
с помощью строки
data_base.body
. Однако это не как работает доступ.
Попробуйте изменить строку на data_base.tBodies[0]
.
Возможно, вы думаете о document.body
для свойства с таким же названием.
data_base.body
, кажется, определено несколько правильно перед вызовом функции.
Вопрос был отредактирован. Так или иначе, видимо, решение было найдено.
Действительно это было. Спасибо за помощь!
вот как вы можете получить элемент ur tbody
const tbody = document.querySelector('tbody');
поэтому вместо
data_base.body.appendChild(tr);
использовать :
tbody.appendChild(tr);
не могли бы вы быть более ясным и сказать, где вы пытаетесь добраться до вашего элемента tbody?
кстати можно заменить
const tr = document.createElement("tr");
const td_id = document.createElement("td");
const td_name = document.createElement("td");
const image = document.createElement("img");
const td_image = document.createElement("td");
td_image.appendChild(image);
const td_price = document.createElement("td");
const td_operation = document.createElement("td");
const operation = document.createElement("button");
td_operation.appendChild(operation);
td_id.textContent = i;
td_name.textContent = data_base.naming;
image.src = data_base.url;
image.alt = "Couldn't load image";
td_price.textContent = data_base.price;
operation.setAttribute("click", "sitDown()");
tr.appendChild(td_id);
tr.appendChild(td_name);
tr.appendChild(td_image);
tr.appendChild(td_price);
tr.appendChild(td_operation);
data_base.body.appendChild(tr);
с
const tr = document.createElement("tr");
tr.innerHTML = `
<td>${i}</td>
<td>${data_base.naming}</td>
<td><img src = "${data_base.url}" alt = "Couldn't load image"></td>
<td>${data_base.price}</td>
<td><button></button></td>
`;
data_base.body.append(tr);
чтобы сделать ваш код более читабельным
и не добавляйте прослушиватель событий в качестве атрибута, как вы сделали здесь
operation.setAttribute("click", "sitDown()");
Поэтому я получаю его из массива с именем «data_base». Я пробовал ваш метод, но он показывает мне, что он не определен
Можете ли вы предоставить мне более подробную информацию, показать мне исключение ошибки ??
script.js:106 Uncaught TypeError: невозможно прочитать свойства null (чтение "appendChild") в appendThis (script.js:106:15) в newTable (script.js:109:5) в giveMe (script.js:137: 9) в script.js:141:1
@BahramGozalov Пожалуйста, добавьте это сообщение об ошибке к своему вопросу, это может помешать закрытию вопроса.
Итак, позвольте мне понять вашу проблему, у вас есть данные, сохраненные в локальном хранилище, и вы хотите поместить их в вашу таблицу, а не тело? @БахрамГозалов
Проблема была исправлена. Это было все потому, что я связал JS перед таблицей
@BahramGozalov проверьте мое отредактированное решение, чтобы предотвратить больше ошибок
Вы уверены, что ссылаетесь на скрипт в обоих файлах?