在IE8及以下版本中,Javascript“Node”未定义
作者:互联网
我有以下代码似乎在除IE8及以下的所有浏览器中都能正常工作.
$("table.availability").each( function() {
var siteName = $(this).parent().siblings("h2").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text()
alert(sitename);
});
它获取元素的内容,并删除子元素中包含的所有内容,只留下该元素的文本.
我得到的错误是Node未定义 – 所以我在js文件的顶部声明它,然后得到关于TEXT_NODE的相同消息,所以我声明了.然后我得到以下错误:
无法获取未定义或空引用的属性“TEXT_NODE”
任何人都可以帮我解决这个问题,或者任何人都可以想到一个更好的方法来获得相同的结果.谢谢.
解决方法:
TEXT_NODE常量有一个value of 3.你可以使用它:
return this.nodeType === 3;
较旧版本的IE只是不实现Node接口,但它们仍然遵循DOM规范并分配正确的nodeType属性值.
如果要使用“常量”,可以自己声明一个Node对象:
var Node = Node || {
ELEMENT_NODE: 1,
ATTRIBUTE_NODE: 2,
TEXT_NODE: 3
// etc... if you might need other node types
};
标签:javascript,jquery,nodes,textnode 来源: https://codeday.me/bug/20190723/1511273.html