继续执行dom命令
Continue executing a dom command
我在一些测试页面中使用这个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')
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- 当我点击jsf中的primefaces命令按钮时,如何获得点击事件
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 如何使用Socket.io将命令从客户端发送到服务器
- 在DOM中查找一个模式并替换它's的内容使用jquery
- DOM事件通过JSON转换为java
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 流星中DOM的繁殖
- 命令行中的Uglify js;不要弄乱变量名
- Nodejs向http服务器发送命令以突出显示或着色DOM元素
- JavaScript/jQuery:运行 DOM 命令 *after* img.onload 命令
- 继续执行dom命令
- 在JS文件中包含Javascript文件,在命令行脚本中不包含HTML或DOM
- 在将函数作为值处理时是否忽略DOM命令