2016-12-03 26 views
0

我正在構建的程序是一個程序,當鼠標關閉時,它讀取鼠標X和鼠標Y的位置。產生錯誤的代碼如下:Javascript在event.clientX上產生錯誤

function updateLocation(event) { 
    setTimeout(function(event){ 
     var X = event.clientX; 
     var Y = event.clientY; 
    },300); 
} 

鉻,歌劇,火狐和邊緣都表示「遺漏的類型錯誤:無法讀取的未定義的屬性‘clientX’(...)」我不明白的是,即使如果我從w3schools.com複製了event.clientX的源代碼,它仍然會產生該錯誤。我試過重寫代碼,我試過只傳遞eventsetTimeout()或者只給函數,但沒有任何工作。有人可以幫助我,這讓人很沮喪。

這裏的一切,我嘗試過的事情的清單:

function updateLocation(event) { 
    setTimeout(function(){ 
     var X = event.clientX; 
     var Y = event.clientY; 
    },300); 
} 

function updateLocation() { 
    setTimeout(function(event){ 
     var X = event.clientX; 
     var Y = event.clientY; 
    },300); 
} 

function updateLocation(event) { 
    alert(event.clientX); 
} 

function updateLocation(event) { 
    setTimeout(function(event){ 
     var X = event.windowX; 
     var Y = event.windowY; 
    },300); 
} 

function updateLocation(event) { 
    setTimeout(function(){ 
     var X = event.windowX; 
     var Y = event.windowY; 
    },300); 
} 

function updateLocation() { 
    setTimeout(function(event){ 
     var X = event.windowX; 
     var Y = event.windowY; 
    },300); 
} 
+0

告訴你如何調用該函數。根據你的描述,'事件'是'未定義的'。 –

+0

請檢查以下回答 – Aruna

回答

1

setTimeout回調函數不應該有任何參數,因爲當它被炒魷魚沒有參數將被傳遞。這就是爲什麼它沒有定義。

如果您只是從下面的函數中刪除它,它會按預期工作。

你可以看看下面的代碼。

function updateLocation(event) { 
 
    setTimeout(function(){ 
 
     var X = event.clientX; 
 
     var Y = event.clientY; 
 
     console.log(X + ', ' + Y); 
 
    },300); 
 
}
.container { 
 
    background-color: gray; 
 
    width: 500px; 
 
    height: 500px; 
 
}
<div class="container" onmousedown="updateLocation(event)">Test Div</div>

+0

謝謝你的回答,我帶來壞消息,它沒有工作,正如我所料。我也嘗試調用相同的功能,沒有setTimeout方法與警報,顯示event.clientX,它會產生錯誤,無論基本上... – Jacob

+0

@Jacob,它仍然沒有工作? – Aruna

+0

不,我不知道爲什麼,我試過重新啓動,什麼也沒有... – Jacob