У меня есть функция:
function Check(o)
{
alert(/* o is a DOM element ? "true" : "false" */);
}
Как проверить, является ли параметр o
объектом DOM или нет?
У меня есть функция:
function Check(o)
{
alert(/* o is a DOM element ? "true" : "false" */);
}
Как проверить, является ли параметр o
объектом DOM или нет?
Проверьте, существует ли свойство 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
Элемент DOM реализует интерфейс Element
. Таким образом, вы можете сделать:
function Check(o) {
alert(o instanceof Element);
}
Вместо того, чтобы просто проверять наличие свойства, я бы проверил его конкретное значение.
Предполагается, что вы ищете элемент типа 1.
function Check(o) {
alert( o && o.nodeType && o.nodeType === 1 );
}
Вы все равно можете получить объект, у которого есть свойство nodeType
, которое на самом деле не является DOM node, но оно также должно иметь соответствующее значение 1
, чтобы дать ложный результат.
Поздний ответ, но фрагмент документа может быть также 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
Вы можете использовать следующую функцию
function isNode(o)
{
return o && 'nodeType' in o;
}
Вы можете проверить, является ли DOM node элементом с JQuery:
element.is("*")