2016-07-14 25 views
1

正如標題所說,我在.JS文件中有一段Javascript代碼。在這裏我調用一個單獨的ASCX文件中的一個函數來更改x變量。Javascript代碼塊完成之前它得到一個被調用函數的結果?我錯過了什麼?

$('#button').bind('click', function (event) { 
Function(); 

if(x == true){do something} 
if(x == false){do something else} 
}); 

在ASCX文件我也有變量和函數:

var x; 
function Function(){ 
if(y > 100) 
x = true 
if(y < 100) 
x = false 
} 

我預計,如果單擊該按鈕,該功能將執行(這確實),變量會根據條件而改變(也發生這種情況)。但是,代碼使用代碼運行前的x值。

因此,如果在點擊按鈕之前x是真實的,並且會點擊按鈕,那麼即使y的條件實際上應該將x評估爲假,結果也總會被評估爲真。

我不知道爲什麼會發生這種情況。不幸的是,合併這些文件使得函數和調用都在同一個位置。任何投入將不勝感激。

親切的問候,羅布

+0

那麼,什麼是'y'? – epascarello

+0

Ray說,你的y值是多少?沒有y值,你的x永遠不會被更新。你提到它是兩個獨立的文件,這兩個文件都可以訪問x和y嗎?另外,請不要調用你的函數的'Function',否則你冒險覆寫東西。 – Shilly

回答

0

您可以從Function返回。 您可以使用返回的值進一步檢查。

你不需要分配和檢查調用上下文中的更新。

一個JS文件:

$('#button').bind('click', function(event) { 
    x = Function(); 

    if(x == true) { //do something } 

    if(x == false) { 
     //do something else 
     } 
}); 

二JS文件:

function Function() { 
    if (y > 100) 
     return true 
    if (y < 100) 
     return false 
} 
0
$('#button').bind('click', function (event) { 
    x= Function(); 

    if(x == true){/*do something*/} 
    if(x == false){/*do something else*/} 
}); 

var x; 
var y = 10; 

function Function(){ 
    if(y > 100) 
     x = true 
    if(y < 100) 
     x = false 
} 
+0

你改變了什麼? – epascarello

+1

那裏沒有y值嗎? – Ray

+2

雖然此代碼片段可能會解決問題,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – FrankerZ

相關問題