我希望通過instanceof運算符檢查傳遞給我的函數的參數是否爲HTMLElement。我知道這在IE7中不起作用,因爲AFAIK IE7沒有定義HTMLElement。我想:沒問題,我會回到像Node這樣的父級原型。但是,隨着StackOverflow的答案已經瞭解到我,節點對象也沒有在IE7中定義IE7中的HTMLElement原型
現在測試我的參數是節點/ HTMLElement的最好方法是什麼?我做錯了嗎?
我希望通過instanceof運算符檢查傳遞給我的函數的參數是否爲HTMLElement。我知道這在IE7中不起作用,因爲AFAIK IE7沒有定義HTMLElement。我想:沒問題,我會回到像Node這樣的父級原型。但是,隨着StackOverflow的答案已經瞭解到我,節點對象也沒有在IE7中定義IE7中的HTMLElement原型
現在測試我的參數是節點/ HTMLElement的最好方法是什麼?我做錯了嗎?
在Node接口HTMLElement
對應類型的節點1
const unsigned short ELEMENT_NODE = 1;
http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1841493061
因此,您應檢查參數的nodeType
:
if (arg && 1 === arg.nodeType) { /* ... */ }
我沒有使用IE7在年齡,但我會檢查一個if (typeof elementNode == 'element')
它可能是'元素'或'HTMLElem ENT」。爲了確保首先做一個alert(typeof elementNode);
知道它的類型。那麼你可以比較它。
編輯:第一評論員澄清↑這不應該工作。
然後,我會嘗試檢查是否有像nodeType或nodeName這樣的成員。 也許像if (elementNode.nodeName !== null)
這樣的例子。始終嘗試alert()。
不,具有DOM元素的'typeof'在IE7中返回''object''。 '.toString()'返回''[object]''。 – katspaugh
@katspaugh謝謝澄清。我編輯了我的答案。 – 2011-09-20 14:25:43