这个问题已被多次询问,但这不是重复。我正在使用for循环来搜索包含select,input等元素的div。它将类名称与objects参数匹配,如果匹配则设置元素的值。
for(var i in obj) {
if(obj.hasOwnProperty(i)) {
$(editClone).find('.' +i).val(obj[i]);
}
}
它在输入元素上工作正常,但是使用select元素会删除所有选项,只需在实际元素标记上设置值。
这是我运行javascript之前的select语句:
<select class="type">
<option value="Home">Home</option>
<option value="Work">Work</option>
<option value="Mobile">Mobile</option>
<option value="Other">Other</option>
</select>
在我运行代码后(在firebug中检查以验证):
<select class="type">Mobile</select>
为什么这样做?我认为val()应该为匹配的选项标签设置。对象值和选项标签是匹配的,但它没有做它应该做的事情。我在这里做错了什么?
结果我得到了DIV,我试图克隆嵌套在HTML中的错误位置以及javascript中的错误克隆调用。完全不相关的错误。下面的答案是正确的,它只是在我的情况下不起作用,因为我不明白我遇到的问题。
答案 0 :(得分:0)
<select class="type">Mobile</select>
无效。选择内部需要option
个标签
这是您的代码的工作版本:
<select class="type">
<option value="0">0</option>
<option value="A">A</option>
</select>
脚本:
$(function() {
var obj = { type: "A" };
var editClone = $(document);
for(var i in obj) {
if(obj.hasOwnProperty(i)) {
$(editClone).find('.' + i).val(obj[i]);
}
}
});