2017-02-17 4 views
-5

私は単純な文字列をいくつかのデータに基づいて実行する単純なjavascript関数を持っています。私が使っているJavascriptの機能は戻り値falseがjavascriptで機能しない

function checkdata() { 
    var data = document.getElementById('data').value; 
    if (data != '') { 
     console.log("Hello"); 
     return false; 
    } else { 
     return true; 
    } 
} 

function gotothen() { 
    console.log("Bye"); 
} 

function changemode(value) { 
    if (value == 0) { 
     checkdata(); 
     gotothen(); 
    } 
    if (value == 1) { 
     checkdata(); 
     gotothen(); 
    } 
} 

であり、私が使っているhtmlコードは

<input type="text" name="data" id="data"> 
<a href="javacript:void(0)" onclick="changemode(0)">Hotel</a> 
<a href="javacript:void(1)" onclick="changemode(1)">Flight</a> 

をしている私は、ハイパーリンクのいずれかにテキストボックスをクリックして任意の値を入力するとそれはchangemode()関数を呼び出します。私はchangemode()機能で呼び出す2つの機能があります。 1つはcheckdata()で、もう1つはgotothen()です。テキストボックスの値が空白でない場合、それはgotothen()関数を呼び出すべきではありませんが、呼び出しています。 "Hello"のみを印刷した後に停止する必要がありますが、戻り値falseを使用したあともgotothen()関数を呼び出しています。では、テキストボックスの値が空白でない場合、どのようにしてgotothen()関数の実行を停止できますか?

+1

あなたは '(CHECKDATA'から値をreturn' ) '。それは***自動的に 'return'ではなく、' changemode() 'でコードを打ち切ります。あなたは 'checkdata'からの戻り値で何もしていません。あなたは文字通り 'checkdata'を呼び出して、次に*無条件に' gotothen'を呼び出します。それぞれと毎回。 – deceze

+0

したがって、この場合、基本的にfalseを返すことはできません。 –

答えて

2

gotothen()に電話しているのは何ですか。 checkdata()の結果は何も変更されません。 changemode()関数ではusrを使用せず、changemode関数は最終的にtrueまたはfalseを返す関数です。

checkdata()の結果がgotothen()を呼び出す条件になるようにコードを変更する必要があります。

if (checkdata()) 
    gotothen(); 
// ... further execution 
3

あなたのコードはfalseを返していますが、実際は使用していないようです。

あなたは

if(checkdata()){ 
    gotothen(); 
} 

のようなロジックの一片をお勧めしますし、このように、あなたのchangemodeブロックの外側にそれを置くことができます。

function changemode(value) { 
    if(checkdata()){ 
     if(value == 0) { 
      gotothen(); 
     } 
     if(value == 1) { 
      gotothen(); 
     } 
    } 
} 
1

機能CHECKDATAは、戻り値を持っているので、あなたはgotothenを呼び出すかどうか決定するためにそれをキャプチャする必要があります。

var check = checkdata(); 

if (check != false) { 
    gotothen(); 
} 

かにそれを簡素化:

if (checkdata() != false) gotothen(); 

、我々は再び簡素化することができます:

if (true_value != false) ... 

を持つ:

if (true_value) ... 
関連する問題