检测给定Javascript对象是否为DOM元素的最佳方法是什么?

时间:2008-09-23 10:38:05

标签: javascript dom cross-browser

比如说我正在编写一个旨在接受多种参数类型的函数:

var overloaded = function (arg) {
    if (is_dom_element(arg)) {
        // Code for DOM Element argument...
    }
};

实施 is_dom_element 的最佳方式是什么,以便它以跨浏览器,相当准确的方式运行?

3 个答案:

答案 0 :(得分:20)

jQuery检查nodeType属性。所以你会:

var overloaded = function (arg) {
    if (arg.nodeType) {
        // Code for DOM Element argument...
    }
};

虽然这会检测所有DOM对象,而不仅仅是元素。如果你只想要元素,那就是:

var overloaded = function (arg) {
    if (arg.nodeType && arg.nodeType == 1) {
        // Code for DOM Element argument...
    }
};

答案 1 :(得分:4)

这可能是这个:

node instanceof HTMLElement

这应该适用于大多数浏览器。否则你必须对它进行鸭式输入(例如typeof x.nodeType != 'undefined'

答案 2 :(得分:0)

怎么样?
obj instanceof HTMLElement