Добрый день, уважаемые коллеги. Я изучаю JavaScript по самоучителю и столкнулся с проблемой в следующем коде:
<pre><code class="javascript">let book = {
title : 'Война и мир',
author: 'Лев Толстой',
year: 1869
};
let output = '';
let values = Object.values(book);
for (let value of values) {
output += value + '<br>';
}
document.getElementById('output').innerHTML = output;</code></pre>
При выполнении появляется ошибка: "Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')" на строке 44 файла sv.php.
Мой JS код размещен внутри HTML документа. Вот структура HTML файла:
<pre><code class="html"><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Перебор свойств</title>
</head>
<body>
<script>
let book = {
title : 'Война и мир',
author: 'Лев Толстой',
year: 1869
};
let output = '';
let values = Object.values(book);
for (let value of values) {
output += value + '<br>';
}
document.getElementById('output').innerHTML = output;
</script>
</body>
</html></code></pre>
Я скопировал код, но ошибка продолжает появляться. Как можно решить эту проблему?
Ошибка "Cannot set properties of null (setting 'innerHTML')" возникает, когда вы пытаетесь получить элемент с ID `output`, который не существует в вашем документе. В вашем коде нет элемента с ID `output`, поэтому метод `document.getElementById('output')` возвращает `null`, что и вызывает ошибку.
Чтобы исправить эту проблему, просто добавьте элемент с необходимым ID в ваш HTML-код.
Вот исправленный код с добавленным элементом `<div>`:
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Перебор свойств</title>
</head>
<body>
<div id="output"></div> <!-- Здесь добавляем элемент с ID "output" -->
<script>
let book = {
title : 'Война и мир',
author: 'Лев Толстой',
year: 1869
};
let output = '';
let values = Object.values(book);
for (let value of values) {
output += value + '<br>'; // немножко поправил `<br>` для правильного HTML
}
document.getElementById('output').innerHTML = output;
</script>
</body>
</html>
```
Теперь код будет корректно работать, и вы увидите значения свойств объекта `book` в элементе `div` с ID `output`.
RTFM: Document -> document.getElementById()
ссылка на объект типа Element соответствующий указанному ID или null, если элемент с указанным ID не найден в документе.