這裏是我的功能:問題與參數傳遞的JavaScript
function findTextFromValue(source, id){
var returnValue = '';
//source = [{value:1, text:"Champagne"},{value:2, text:"Vallée de la Loire"}, {value:3, text:"Bordelais"},{value:4, text:"Sud-Ouest"},{value:5, text:"Languedoc-Roussillon"},{value:6, text:"Lorraine"},{value:7, text:"Alsace"},{value:8, text:"Jura"},{value:9, text:"Bourgogne"},{value:11, text:"Savoie"},{value:12, text:"Vallée du Rhône"},{value:13, text:"Provence"},{value:14, text:"Corse"},{value:15, text:"Coteaux du Lyonnais"},{value:16, text:"Bugey"}];
//alert(source);
$.each(source, function(key, value) {
if(value.value == id){
returnValue = value.text;
return false;/* BREAK EACH ITERATION*/
}
});
return returnValue;
}
當源被設置在函數內部,一切都完美的作品。 當源是通過函數參數傳遞,我得到一個
TypeError: invalid 'in' operand e
的硬編碼陣列是我複製/粘貼從警報的陣列,所以它應該是完全一樣的。我錯過了什麼?
SOLUTION:
source = eval(source);
更好的解決方案
的eval是邪惡的(有人告訴我...)好答案是:
source = JSON.parse(source);
那些誰有這個錯誤:
SyntaxError: JSON.parse: expected property name or '}'
這意味着你的JSON數組不包含雙引號。例如:
[{"value":"1", "text":"Champagne"}, ...]
你確定你傳遞一個數組,而不是,例如,一個JSON字符串? –
要了解更多關於源代碼的信息,請不要使用'alert'。使用'console.log(source,typeof source);'並打開控制檯(F12)。 –
向我們展示一個失敗的例子! – deceze