继续执行DOM命令
问题描述:
我在一些测试页中使用此命令DOM:继续执行DOM命令
document.querySelector('div#summary-item div.description').innerHTML || ""
但在一些网页时,第一部分不存在,我没有收到第二“”但我收到此错误我PROGRAMM停止
Uncaught TypeError: Cannot read property 'innerHTML' of null(…)
有没有什么简单的方法来获得“”,而不需要使用typeof在if语句?
答
您不需要typeof
但您确实需要一个if
语句或其他一些流控制。
var el = document.querySelector('div#summary-item div.description');
var data = "";
if (el)
data = el.innerHTML;
或者这里使用条件运算符:
var el = document.querySelector('div#summary-item div.description');
var data = el ? el.innerHTML : "";
从技术上讲,你可以逃脱不使用流控制语句或表达使用具有.innerHTML
属性的对象。
var data = (document.querySelector('div#summary-item div.description') || {innerHTML:""}).innerHTML;
但我认为这是丑陋的。语句是if
语言的一部分。不知道为什么你想避免它。
当然,如果它真的困扰你,你总是可以使用一个将它抽象出来的函数。
function htmlFromElem(selector) {
var el = document.querySelector(selector);
return el ? el.innerHTML : "";
}
然后使用它是这样的:
var data = htmlFromElem('div#summary-item div.description')