#javascript #html #css
Вопрос:
Я пытаюсь вставить новый Div и img внутрь этого div через JS. Я создал класс, которым я буду пользоваться позже, с функцией внутри, которую следует вызвать, чтобы использовать эту функцию и вставить изображение. При этом я постоянно получаю Uncaught TypeError: Cannot read properties of null (reading 'appendChild')
HTML и JS ниже:
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>Actividad 3</title>
<script type="text/javascript" src="actividad3.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="style.css">
<body >
<h2>EXTRAS DISPONIBLES</h2>
</body>
</html>
JS
class extra {
precio = "10€";
url = "concha_azul.jpeg";
constructor(precio, url) {
this.precio = precio;
this.url = url;
}
getHTML = function () {
console.log("hello");
var newDiv = document.createElement("div");
newDiv.id = "x";
var div = document.getElementById("x");
var img = document.createElement("img");
img.src = "concha_azul.jpeg";
div.appendChild(img);
}
}
let miExtra = new extra();
miExtra.getHTML();
Комментарии:
1. Почему у вас такая линия
var div = document.getElementById("x");
?? Пока вы не добавите его в dom, вы не сможете получить это свойство.. Попробуйте что-нибудь в этомnewDiv.appendChild(img);
роде ..
Ответ №1:
Когда вы пытаетесь захватить элемент ‘newDiv’ по его идентификатору, он еще не существует в HTML-документе. Сначала вам нужно добавить элемент newDiv на страницу, а затем вы можете получить его по идентификатору…
//Create new div
var newDiv = document.createElement("div");
newDiv.id = "x";
//Add div to html body
document.body.appendChild(newDiv);
//Get new div by it's id
var div = document.getElementById("x");
var img = document.createElement("img");
img.src = "concha_azul.jpeg";
div.appendChild(img);
Кроме того, чтобы все было проще, вы могли бы просто сделать это…
//Create new div
var newDiv = document.createElement("div");
newDiv.id = "x";
//Add div to html body
document.body.appendChild(newDiv);
//Add an image element to the div
var img = document.createElement("img");
img.src = "concha_azul.jpeg";
newDiv.appendChild(img);
Комментарии:
1. Я пробовал это и все еще получаю неперехваченную ошибку типа: Не удается прочитать свойства null (чтение «appendChild»), но теперь для
document.body.appendChild(newDiv);
2. @SamuelVanBladel — Это «actividad3.js» где находится ваш дополнительный класс? Если это так, то основная часть страницы и ее элементы еще не загружены, поэтому «document.body» вернет значение null. Скрипт должен будет находиться под тегом body.
3. Да, так и есть. Теперь я переместил его в нижнюю часть тега тела, и это сработало. Пробовал под биркой на теле, но это было запрещено. Большое — большое спасибо!