Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:区分DOM元素对象和事件对象_Javascript_Jquery - Fatal编程技术网

JavaScript:区分DOM元素对象和事件对象

JavaScript:区分DOM元素对象和事件对象,javascript,jquery,Javascript,Jquery,可能重复: 我有以下简单的功能: function do_smth(el){ if(typeof el != 'object'){ el = this } var val = $.trim(el.value) /**** some code here ****/ } 有时它作为事件绑定到元素 (一) 有时它的用法如下 (二) 这两种方式都应该很好 问题是,在第一种情况下,即使没有传递参数,我也会将el作为Event对象。 所以typeo

可能重复:

我有以下简单的功能:

function do_smth(el){

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

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

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

(一)

有时它的用法如下

(二)

这两种方式都应该很好

问题是,在第一种情况下,即使没有传递参数,我也会将
el
作为
Event
对象。 所以
typeof el!='对象“
无法按预期工作


如何区分DOM元素或事件?

要区分DOM元素

if(el.nodeType)

您应该以一致的方式使用该函数。如果您确定它是一个元素,而不是文档或文本节点,那么您可以执行
el。nodeType==1
nodeType为元素节点返回1。是的,但是事件对象根本没有节点类型,所以只要查询值是否存在就可以了。如果(el.nodeType==1)做
会更安全,虽然
el
中有一个小错误,当用作事件处理程序时,它将是事件对象。不,
el
总是被定义的,它可能是一个事件对,我误解了这个问题。更新。。。
do_smth(element)
if(el.nodeType)
function do_smth(el){
    el = el.nodeType == 1 ? el : this;
    var val = $.trim(el.value)
}