в javascript, как вы определяете тип объекта dom, например, HTMLLIElement или HTMLElement - PullRequest
1 голос
/ 20 апреля 2011

с элементами dom, как я могу получить тип объекта?

Единственная подсказка, которую я вижу, - это метод <code>_ proto _ с тем же именем многообещающе, он имеет наследство <code>_ прото _.

Кроме IE, это правильный путь?

если так, что бы

function getNodeType( node ) return string
// would return HTMLLIElement for example

function isNodeType( node, type ) return boolean
// whether node is or is inherited from that type

будет выглядеть?

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

instanceof должно быть хорошо, если вы имеете дело только с одним документом.Если вы тестируете объекты из другого фрейма, instanceof не будет работать:

document.body instanceof HTMLBodyElement  // true
var iframe = document.body.appendChild(document.createElement('iframe'));
iframe.contentDocument.body instanceof HTMLBodyElement  // false!

Вместо этого вам нужно будет сравнивать строки.Это то, что Google Closure закончил тем, что внедрил goog.isArray (до изобретения Array.isArray([])).Например:

iframe.contentDocument.body.toString() === '[object HTMLBodyElement]'  // true

Но я бы порекомендовал просто использовать tagName или nodeName.

2 голосов
/ 20 апреля 2011

Это дает вам то, что вы хотите?

el.tagName;

Или посмотрите на оператора instanceof.

1 голос
/ 20 апреля 2011
function isNodeType( node, type ){
    return node instanceof type;
}
function getNodeType(node){
    return node.__proto__;
}

var div = document.createElement("div");
isNodeType(div, HTMLDivElement);   // true
getNodeType(div);                               // HTMLDivElement
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...