简体   繁体   中英

Why TypeError: document.getElementById() is null

Why the following code generates TypeError: document.getElementById("docPrint") is null

var printwindow = window.open('', '', 'fullScreen=no');
printwindow.document.write('<iframe id="docPrint" width="100%" height="100%" src="http://localhost:8080/hiring/docs/Keneth _1340800082258/Keneth _resume_1340800082258.pdf"></iframe>');
printwindow.self.focus();
document.getElementById('docPrint').focus();
document.getElementById('docPrint').contentWindow.print();

You are operating across two windows.

printwindow.document.write
document.getElementById

If you want to get the element you created in the popup then you have to call it's gEBI method.

printwindow.document.write
printwindow.document.getElementById

Prepend printwindow. to each instance of document.getElementById :

printwindow.document.getElementById('docPrint').focus();
printwindow.document.getElementById('docPrint').contentWindow.print();

You need to prefix your calls to document.getElementById with 'printwindow':

printwindow.document.getElementById('docPrint').focus();
printwindow.document.getElementById('docPrint').contentWindow.print();

You might also want to keep a reference to the element in a variable, to avoid the boilerplate

var el = printwindow.document.getElementById('docPrint');
el.focus();
el.contentWindow.print();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM