Подтвердить что ты не робот

Как проверить, является ли объект элементом DOM?

У меня есть функция:

function Check(o)
{
    alert(/* o is a DOM element ? "true" : "false" */);
}

Как проверить, является ли параметр o объектом DOM или нет?

4b9b3361

Ответ 1

Проверьте, существует ли свойство nodeName.

В основном проверьте, является ли это Node: просмотрите спецификации DOM lvl 1, проверьте определение Node.

Если вы имели в виду это буквально, когда вы сказали Element проверить свойство tagName, посмотрите на определение элемента в той же спецификации

Чтобы повторить, сделайте либо

function Check(o)
{
    alert(o.tagName ? "true" : "false");
}

чтобы проверить, является ли это элементом DOM или

function Check(o)
{
    alert(o.nodeName ? "true" : "false" );
}

чтобы проверить, является ли это DOM Node

Ответ 2

Элемент DOM реализует интерфейс Element. Таким образом, вы можете сделать:

function Check(o) {
    alert(o instanceof Element);
}

Ответ 3

Вместо того, чтобы просто проверять наличие свойства, я бы проверил его конкретное значение.

Предполагается, что вы ищете элемент типа 1.

nodeType at MDC (docs)

function Check(o) {
    alert( o && o.nodeType && o.nodeType === 1 );
}

Вы все равно можете получить объект, у которого есть свойство nodeType, которое на самом деле не является DOM node, но оно также должно иметь соответствующее значение 1, чтобы дать ложный результат.

Ответ 4

Поздний ответ, но фрагмент документа может быть также node:

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

Ответ 5

Вы можете использовать следующую функцию

function isNode(o)
{
  return o && 'nodeType' in o;
}

Ответ 6

Вы можете проверить, является ли DOM node элементом с JQuery:

element.is("*")