Я хотел бы знать, почему у меня возникает эта ошибка
function printDiv(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
printDiv(printableArea);
<body>
<div id="printableArea" style="display: none;">
<h1>Print me</h1>
</div>
</body>
И у меня есть эта ошибка:
Не удается прочитать свойство "innerHTML" со значением null в printDiv (first.html:48) в first.html:58`
Это строка 48:
var printContents = document.getElementById(divName).innerHTML;
А это 58:
printDiv(printableArea);
Ошибка здесь:
Нет никакой переменной
printableArea
. Но если есть элемент сID
равнымprintableArea
.Решение:
На самом деле ошибка, я думаю, довольно явная:
Это означает, что вы пытаетесь использовать
innerHTML
нулевой элемент.На самом деле ошибка выдается не в строке 58, а в строке 48, в которой вы пытаетесь выполнить следующее действие:
Конечно, вы не можете изменить HTML элемента, которого не существует, поэтому вы получаете ошибку, потому что
divName
это должен быть идентификатор, и вместо этого вы передаетеdivName
переменнуюprintableArea
(которой не существует) удостоверения личностиСинтаксис метода
getElementById
следующий:в котором
elementID
это должен бытьString
идентификатор элемента страницы.Поэтому исправление вашей проблемы будет сделано в строке 58, в которой вы передаете параметр функции
divName
, передаваяString
идентификатор вместо несуществующей переменной.Конечно, вы также можете сделать следующее, если хотите использовать переменную:
Сначала убедитесь, что элемент существует:
Измените код следующим образом: