2010-10-21 55 views
3

我有以下代碼。javascript:如何檢查屬性是undefined

elem.onkeypress=function(e){ 
if((e.which===undefined?e.keyCode:e.which)==13){ 
    //dosomething 
    } 
} 

在IE8,它occus誤差修改:'which' is null or not an object

如何解決這個問題。

+1

可能重複(http://stackoverflow.com/questions/3390396/best-way-to-check-for-未定義在JavaScript)和其他... – 2010-10-21 08:48:39

+0

有點不同是這一個是檢查wheather一個對象的屬性是未定義的,而不是一個變量。 – 2010-10-21 09:12:41

+0

該問題與'which'屬性的'undefined'檢查無關。問題是'e'是未定義的。 – 2010-10-21 09:14:01

回答

5

去的問題是,e在IE,因爲沒有事件對象作爲參數傳遞給事件處理程序通過不確定的。您需要window.event屬性:的[檢查在JavaScript「未定義」的最佳方式]

elem.onkeypress=function(e) { 
    e = e || window.event; 
    var charCode = e.which || e.keyCode; 
    if (charCode == 13) { 
    //dosomething 
    } 
}; 
0

使用的typeof:

if (typeof e.which == 'undefined' ? e.keyCode : e.which) == 13)

1

一種方式是通過(e.hasOwnProperty('which') ? ...