2011-08-29 131 views
1

可能重複:
Javascript isDOM — How do you check if a Javascript Object is a DOM Object?JavaScript的:區分DOM元素對象和事件對象

我有以下簡單功能:

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元素或事件?

+1

你應該在IMO以一致的方式使用該功能。 –

回答

1
function do_smth(el){ 
    el = el.nodeType == 1 ? el : this; 
    var val = $.trim(el.value) 
} 
+0

當用作事件處理程序時,el將成爲事件對象。 –

+0

不,'el'總是被定義的,它可以是一個事件 – Dan

+0

對,我誤解了這個問題。更新... – David

1

要distingusih DOM元素做

if(el.nodeType) 
+0

那麼,如果你確定它是一個元素,而不是文檔或文本節點,那麼你可以做'el.nodeType === 1' https://developer.mozilla.org/en/nodeType – William

+0

nodeType返回1爲元素節點。 https://developer.mozilla.org/en/nodeType – Trevor

+0

是的,但事件對象根本沒有nodeType,所以只是查詢值是否存在應該沒問題。做'if(el.nodeType === 1)'雖然 – William