问题:在页面里,我想在一个select选项后面通过JS动态地再添加一个或一个以上的select选项。可每次执行完JS代码后,select这个对象是添加进去了,可里面没有选项。
运行完JS后的效果图:
JS代码如下:
var i=1;
function add()
{
var j=i-1;
var tagname="project_contractor"+j;
var id="project_contractor"+i;
var head="<select class='InputStyle' name='project_contractor' id='"+id+"'><option value='0'>请选择</option>";
var project_no=document.getElementById(tagname);
var project_noIndex=project_no.selectedIndex;
var project_noValue=project_no.options[project_noIndex].value;
if(project_noValue==0)
{
alert("上一未选择,不需再增加!");
return false;
}
$.ajax( {
type: "POST", //提交方式
url : 'customerSerch.bia', //提交路径
success : function(data) {
var json=eval('(' + data + ')');
for(var i=0;i<json.length;i++){
head+="<option value='"+json[i].customer_no+"'>"+json[i].customer_name+"</option>";
}
var br = document.createElement("<br />");
var Selects = document.getElementById("project_contractorSelect");
Selects.appendChild(br);
alert(head+"</select>");
Selects.appendChild(document.createElement(head+"</select>"));
},
error : function() {
alert("系统报错,稍后重试!");
}
});
i++;
}
声明:Ajax方法执行成功,后台数据取出成功。
这个问题折腾一天了,求大神解答。
------解决方案--------------------
alert(head+"</select>");这句打印出来还正常啊?
------解决方案--------------------
var sel= document.createElement("select");
sel.options[0] = new Option("1", "aaa");
sel.options[1] = new Option("2", "bbb");
------解决方案--------------------
改成这样试试:Selects.append(head+"</select>");
------解决方案--------------------
1、首先点开浏览器F12开发者工具,查看你新增的select那段代码里面是否有option元素,可能是option元素在组装时因为不符合标准所以未能正常显示。
2、如果第一步并没有找到Option元素,就查看你的代码逻辑,for循环是否进入了,在for循环里面添加标记。
PS,调试JS推荐用console.log()代替alert() 前者会在浏览器的控制台打印信息,不会弹出对话框阻断程序运行