2017-08-25 137 views
-2
getDateRange = function() { 
     date = new Date(); 
     var test; 
     selectedOption = $('#daterange').change().val() 
     console.log(selectedOption) // reusult 0 
     switch (selectedOption) { 
      case 0: 
       test = '/' + date.getFullYear() + '-' + 0 + date.getMonth() + '-' + date.getDate() + '/' + date.getFullYear() + '-' + 0 + (date.getMonth() + 1) + '-' + date.getDate() 
       break 
     } 
     return test 
    } 
    console.log($('#daterange').change().val()) // result 0 
    console.log(getDateRange()) // result "undefined". Why? 

爲什麼switch語句的結果總是undefinedJavaScript switch語句混淆

+1

爲什麼如果只有1個案例需要'switch'? :( – Dekel

回答

2

更改你的case語句來case '0'因爲val()返回一個字符串。

另外:如果除了返回測試變量之外,您在switch語句之後沒有做其他任何事情,那麼您也可以僅返回值並擺脫var test

getDateRange = function() { 
 
    date = new Date(); 
 
    selectedOption = $('#daterange').change().val(); 
 
    switch (selectedOption) { 
 
    case '0': 
 
     return '/' + date.getFullYear() + '-' + 0 + date.getMonth() + '-' + date.getDate() + '/' + date.getFullYear() + '-' + 0 + (date.getMonth() + 1) + '-' + date.getDate(); 
 
    } 
 
} 
 
console.log(getDateRange());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="daterange" value="0" />

+1

或'case'0':'爲什麼要浪費時間解析? – Barmar

+0

好點t,改變了我的回答 – lumio

+0

另外,如果你想快速地將一個字符串轉換爲一個數字等價物,你可以簡單地在字符串前加一個加號。酸當量+'0'=== 0 – zfrisch

1

$('#daterange').change().val()返回一個字符串,但在開關中,您將與一個數字進行比較。

而且,在當前的例子中,你不需要切換,因爲你只有一種情況:

getDateRange = function() { 
    var selectedOption = $('#daterange').change().val(); 
    if (selectedOption === '0') { 
     return ... 
    } 
} 
+1

爲什麼'開關',當你只有1個情況?:( – Dekel

+1

@Dekel,是不是OP的問題? – trincot

+1

即使問題是關於開關 - 你應該給一個更好的答案,基於你看到的代碼 – Dekel

0

我的JavaScript的,數據類型應該是tighly配對您對比operatot,所以它與===

比較在這種情況下,類型和數據都將匹配在一起。

getDateRange = function() { 
    date = new Date(); 
    selectedOption = $('#daterange').change().val(); 
    switch (selectedOption) { 
    case '0': 
     return '/' + date.getFullYear() + '-' + 0 + date.getMonth() + '-' + date.getDate() + '/' + date.getFullYear() + '-' + 0 + (date.getMonth() + 1) + '-' + date.getDate(); 
    } 
} 
console.log(getDateRange());