У меня есть функция:
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("*")