继续执行dom命令

Continue executing a dom command

本文关键字:命令 dom 执行 继续      更新时间:2023-09-26

我在一些测试页面中使用这个dom命令:

document.querySelector('div#summary-item div.description').innerHTML || ""

但在一些页面中,当第一部分不存在时,我不会收到第二个",但我收到了这个错误,我的程序停止了

Uncaught TypeError: Cannot read property 'innerHTML' of null(…)

有没有什么简单的方法可以在不需要在if语句中使用typeof的情况下接收"?

您不需要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')