2017-02-17 134 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()功能。一個是checkdata(),另一個是gotothen()。因此,如果文本框的值不是空白,那麼它不應該調用gotothen()函數,但它正在調用。它應該在打印「Hello」後停止,但在使用返回false後它也會調用gotothen()函數。那麼如果文本框的值不是空白,我怎樣才能停止執行gotothen()函數?

+1

你''從checkdata return'值( )'。這不會***自動'返回'並中止'changemode()'中的代碼。你不會對'checkdata'的返回值做任何事情。你直接調用'checkdata'然後*無條件地調用'gotothen';每一次。 – deceze

+0

所以基本上返回false將無法在這種情況下工作? –

回答

2

無論發生什麼,您都致電gotothen()。 checkdata()的結果不會改變任何內容。您不要在changemode()函數中使用它,並且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) ...