我想知道为什么我有这个错误
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>
我有这个错误:
无法在 first.html:58 处读取 printDiv (first.html:48) 处的 null 属性“innerHTML”
这是第 48 行:
var printContents = document.getElementById(divName).innerHTML;
这是58:
printDiv(printableArea);
错误在这里:
没有变量
printableArea
。但是如果有一个ID
等于的元素printableArea
。解决方案:
实际上,我认为这个错误非常明确:
这意味着您正在尝试
innerHTML
在 null 元素上使用。第 58 行并没有真正给出错误,而是第 48 行给出了错误,您在其中尝试执行以下操作:
当然,你不能修改一个不存在的元素的 HTML,所以这就是你得到错误的原因,因为
divName
它必须是一个 ID 并且你正在传递divName
变量printableArea
(它不存在)而不是一个身份证方法语法
getElementById
如下:其中
elementID
它必须是String
表示页面元素 ID 的 a。因此,将在第 58 行更正您的问题,在该行中,您将参数传递给函数
divName
,传递String
ID 而不是不存在的变量。当然,如果您想使用变量,也可以执行以下操作:
首先验证元素是否存在:
修改您的代码如下: