【问题标题】:JavaScript: distinguish DOM element objects and Event objects [duplicate]JavaScript:区分DOM元素对象和事件对象[重复]
【发布时间】:2011-11-06 06:12:04
【问题描述】:

可能重复:
Javascript isDOM — How do you check if a Javascript Object is a DOM Object?

我有以下简单的功能:

function do_smth(el){

    if(typeof el != 'object'){
        el = this
    }
    var val = $.trim(el.value)

     /**** some code here ****/

}

有时它作为事件绑定到元素

1)

element.onclick = do_smth

有时会这样使用

2)

do_smth(element)

这两种方式都应该很好用......

问题是我在第一种情况下将el 作为Event 对象,即使没有传递任何参数。 所以typeof el != 'object' 不能按预期工作。

如何区分 DOM 元素或事件?

【问题讨论】:

  • 您应该以与 imo 一致的方式使用该功能。

标签: javascript jquery


【解决方案1】:
function do_smth(el){
    el = el.nodeType == 1 ? el : this;
    var val = $.trim(el.value)
}

【讨论】:

  • el 用作事件处理程序时将成为事件对象。
  • 不,el 总是被定义,它可以是一个事件
  • 对,我误解了这个问题。更新了...
【解决方案2】:

区分一个DOM元素做

if(el.nodeType)

【讨论】:

  • 好吧,如果你确定它是一个元素而不是一个文档或文本节点,那么你可以这样做 el.nodeType===1 developer.mozilla.org/en/nodeType
  • nodeType 为元素节点返回 1。 developer.mozilla.org/en/nodeType
  • 是的,但是事件对象根本没有 nodeType,所以只要查询值是否存在就可以了。不过if(el.nodeType===1) 会更安全
  • 是的,IE5 中有一个小错误
猜你喜欢
  • 1970-01-01
  • 2011-10-20
  • 2011-10-21
  • 1970-01-01
  • 2015-10-04
  • 2012-05-01
  • 1970-01-01
  • 2011-06-13
  • 2011-06-12
相关资源
最近更新 更多