我正在尝试使用JavaScript对象的键和值来填充我正在动态创建的下拉菜单的属性和文本。
以下是相关代码
HTML:
<div>
<select id="docs">
<option>- Choose a document to preview -</option>
<option id="specEd" class="eng kor viet esp chin">Special Education Programs</option>
<option id="parRight" class="eng kor esp">Special Ed. Parents Rights</option>
<option id="cac" class="eng esp">CAC Brochure</option>
</select>
</div>
<div id="langSelectBox" class="clearfix">
<h3>Select a Language</h3>
<select class="language" style="display:none;">
</select>
<div id="brochure">
</div>
</div>
jQuery的:
$(function() {
var map = {
"eng" : "English",
"esp" : "Español",
"kor" : "한국어",
"viet" : "Tiếng Việt",
"chin" : "中文"
}
$brochureSelect.on("change", function() {
$(".language").html("");
var selected = $("option:selected", this).attr("class");
var arr = selected.split(" ");
$.each(map, function(k, v) {
$(".language").append("<option id="+map[v]+">"+map[k]+"</option>");
});
});
});
当我与map
互动时,我的麻烦就出现了。运行时,我有下拉菜单,但所有id属性的值都是undefined
。换句话说,函数中的k
正在返回undefined
。我阅读了$.each
的文档,这应该有效,但唯一可行的变量是k
。我已经尝试在函数外定义变量map
,取走引号,并将双引号更改为单引号。
这是它的样子:
<select class="language">
<option id="undefined">English</option>
<option id="undefined">Español</option>
<option id="undefined">한국어</option>
<option id="undefined">Tiếng Việt</option>
<option id="undefined">中文</option>
</select>
我想这样:
<select class="language">
<option id="eng">English</option>
<option id="esp">Español</option>
<option id="kor">한국어</option>
<option id="viet">Tiếng Việt</option>
<option id="chin">中文</option>
</select>
答案 0 :(得分:0)
使用each功能:
k = key (e.g. "eng")
v = value (e.g. "English")
所以你的每个功能都应该是这样的:
$.each(map, function(k, v){
$(".language").append("<option id="+ k +">"+ v +"</option>");
});
答案 1 :(得分:0)
你只需传递键和值而不是map [k]&amp;地图[V]
$.each(map, function(k, v){
console.log(k)
$(".language").append("<option id="+k+">"+v+"</option>");
});
});