2017-07-30 98 views
0

考慮以下幾點:創建`option`用下劃線

function autoCompleteOptions(json) { 
 
     _.map(json, function(x) { 
 
      const a = x["a"]; 
 
      const b = x["b"]; 
 
      var option = document.createElement('option'); 
 
      option.setAttribute('data-value', a); 
 
      option.value = b; 
 
      console.log('option:', option); 
 
      return option; 
 
     }) 
 
    } 
 

 
var result = autoCompleteOptions([ 
 
    { 
 
     "a" : "hi", 
 
     "b" : "world" 
 
    } 
 
    ]); 
 

 
console.log('result:', result);
<script src="http://underscorejs.org/underscore-min.js"></script>

爲什麼console.log顯示undefined?我期待着一組option HTML元素。

+2

因爲你的函數('autoCompleteOptions')沒有明確返回值? – undefined

+0

在你的代碼片段中,它看起來像你不包含'underscore.js' –

+0

這段代碼中沒有JSON。 JSON是一種將數據編碼爲字符串的格式。你有一個數組和一個對象。 – 4castle

回答

1

我認爲你需要從你的函數

return _.map(json, function(x) {...} 
0

這僅僅是與#2是如何工作的問題返回_.map結果。您正嘗試從非安全來源加載_庫(http://underscorejs.org/underscore-min.js),但SO使用https

從像https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js這樣的安全來源加載它來修復_未定義的問題。

作爲第二個問題,正如其他人指出的那樣,您需要返回autoCompleteOptions函數中的某些內容。

function autoCompleteOptions(json) { 
 
    return _.map(json, function(x) { 
 
    const a = x["a"]; 
 
    const b = x["b"]; 
 
    var option = document.createElement('option'); 
 
    option.setAttribute('data-value', a); 
 
    option.value = b; 
 
    console.log('option:', option); 
 
    return option; 
 
    }) 
 
} 
 

 
var result = autoCompleteOptions([{ 
 
    "a": "hi", 
 
    "b": "world" 
 
}]); 
 

 
console.log('result:', result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>