2016-07-14 2 views
1

タイトルには、.JSファイルに1ブロックのJavascriptコードがあります。ここでは、x変数を変更する別のASCXファイルの関数を呼び出します。私はボタンがクリックされた場合、関数は(それがないもの)を実行だろう、という期待Javascriptコードブロックは、呼び出された関数の結果を戻す前に終了しますか?私は何が欠けていますか?

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

、変数になります。

私は変数と関数を持っているASCXファイルで
$('#button').bind('click', function (event) { 
Function(); 

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

条件によって変化します(これも起こります)。しかし、コードは、コードが実行される前の状態のxの値を使用します。

ボタンがクリックされる前にxがtrueで、ボタンをクリックすると、yの条件に実際にxがfalseと評価されても、結果は常にtrueと評価されます。

なぜこれが起こっているのかわかりません。関数と呼び出しの両方が同じ場所にあるようにファイルをマージすることは、残念なことにオプションではありません。どんな入力も非常に高く評価されます。

敬具、ロブ

+0

だから、 'y'は何ですか? – epascarello

+0

Rayが言っているように、y値は何ですか? y値がなければ、xは決して更新されません。あなたはそれが2つの別々のファイルだと言いますが、両方のファイルはxとyの両方にアクセスできますか?また、関数 '関数'を呼び出さないでください。上書きする危険があります。 – 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

関連する問題