У меня есть функция:Как проверить, является ли объект элементом DOM?
function Check(o)
{
alert(/* o is a DOM element ? "true" : "false" */);
}
Как я могу проверить, если параметр o
является объектом DOM или нет?
У меня есть функция:Как проверить, является ли объект элементом DOM?
function Check(o)
{
alert(/* o is a DOM element ? "true" : "false" */);
}
Как я могу проверить, если параметр o
является объектом DOM или нет?
Элемент DOM реализует интерфейс Element
. Таким образом, вы можете сделать:
function Check(o) {
alert(o instanceof Element);
}
Это лучший ответ. – geoyws
Проверьте, существует ли свойство nodeName
.
В основном проверьте, является ли это Node
: посмотрите на DOM lvl 1 specs, проверьте определение узла.
Если вы имели в виду это буквально, когда вы сказали Element
чек на tagName
недвижимости, посмотрите на определение элементов в той же спецификации
Подведем итоги, сделать что-либо
function Check(o)
{
alert(o.tagName ? "true" : "false");
}
, чтобы проверить, если это Элемент DOM или
function Check(o)
{
alert(o.nodeName ? "true" : "false");
}
, чтобы проверить, если это DOM Node
или 'nodeType', или что-то еще является свойством корневого объекта' DOMElement'. –
Это не кажется пуленепробиваемым. Что делать, если есть объект с этим именем? Это единственный способ? Я мог бы что-то еще ... – BrunoLM
Ну, вы можете сделать его более безопасным, проверив против всех (или по крайней мере двух или трех) свойств и методов, которые эти объекты должны иметь, чтобы соответствовать спецификации, но это похоже на излишний ... –
Вы можете использовать следующую функцию
function isNode(o)
{
return o && 'nodeType' in o;
}
Я считаю, что это должно быть '' nodeType 'в o', но хорошая чистая идея! –
@BenRowe: Nate Barr прав, 'nodeType'' должен быть в кавычках, если нет, ваш код приводит к _" ReferenceError: nodeType не определен "_, поэтому, пожалуйста, отредактируйте свой пост! – Sk8erPeter
Спасибо, я сделаю настройку –
Вместо того, чтобы просто проверка существования собственности, я бы проверить его конкретное значение.
Предполагается, что вы ищете элемент типа 1.
function Check(o) {
alert(o && o.nodeType && o.nodeType === 1);
}
Вы можете все еще получить объект, который имеет nodeType
свойство, которое на самом деле не DOM узел, но он также будет иметь соответствующее значение из 1
дать ложный положительный результат.
Короче версия будет: obj && obj.nodeType === 1 – Meglio
Поздний ответ, но фрагмент документа может быть узлом, а также:
function isNode(node) {
return node && (node.nodeType === 1 || node.nodeType == 11);
}
Кредиты: https://github.com/k-gun/so/blob/4.8.1/so.dom.js#L50
Вы можете проверить, если узел DOM является элементом с JQuery:
element.is("*")
Любой узел DOM или определенный тип узла? – user113716
@patrick Любой. Чтобы проверить конкретный, я мог бы просто проверить имя тега правильно? – BrunoLM
Нет, 'tagName' выдаст тип элемента" 1-й тип ". Существует несколько других типов узлов. – user113716