加载select

jianshao810 2009-11-12 04:32:01
<select id="s1">
<option>所有省</option>
</select>

当我点击该控件后就将所有省份显示出来。请问这样怎样 实现呢?
我从服务器那边取出数据

function getProviceBack(obj, text) {
if (text != null && text.length > 4) {
var json = eval(text);
var item;
var str = '<option>所有省份</option>';
for (var i = 0; i < json.length; i++) {
item = json[i];
str += "<option value='" + item.name + "'>" + item.name + "</option>";
}
// alert(str);
obj.innerHTML = str;
}

但是这样没用 。而且我是在click事件里加载的
...全文
94 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
msdnlu 2009-11-12
  • 打赏
  • 举报
回复
BUG: Internet Explorer Fails to Set the innerHTML Property of the Select Object

function fill_select1() {

for(var i=0; i < 100; i++) {
select1.options[i] = new Option(i,i);
}
}

function fill_select2() {

var sOpts = "<SELECT>";
for (var i=0;i<100;i++)
{
sOpts += '<OPTION VALUE="' + i + '">' + i + '</OPTION>\n';
}
select2.outerHTML = sOpts + "</SELECT>";
}

function fill_select3() {

for(var i=0; i < 100; i++) {
var oOption = document.createElement("OPTION");
oOption.text="Option: " + i;
oOption.value=i;
document.all.select3.add(oOption)
}
}

FROM:http://support.microsoft.com/kb/276228
jianshao810 2009-11-12
  • 打赏
  • 举报
回复
我估计它只是异步加载,而不是点击之后再立刻加载的。
jianshao810 2009-11-12
  • 打赏
  • 举报
回复
都可以。。谢谢大家拉。但不是我要的结果。
Click_Me 2009-11-12
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>

</head>

<body>
<select id="list">
</select>
<script type="text/javascript">
<!--

//测试数据
var json = [
{"name": "beijing"},
{"name": "shanghai"},
{"name": "tianjin"},
{"name": "chengdu"},
{"name": "yunnan"}
];
function getProviceBack(obj, json) {
if (json != null && json.length > 4) {
var item, op = ['<option>所有省份</option>'];
for (var i = 0; i < json.length; i++) {
op[op.length] = "<option value='"+json[i].name+"'>"+json[i].name+"</option>";
}
if(obj.outerHTML){
obj.outerHTML = obj.outerHTML.replace(/></,">"+op.join('')+"<");
}
else if(obj.innerHTML)
{
obj.innerHTML = op.join('');
}

}
}
getProviceBack(document.getElementById('list'), json);
//-->
</script>
</body>
</html>
sohighthesky 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jianshao810 的回复:]
就是我第一次点击的时候 也好像 是已经加载那样。现在第一次点击它 只有一个 option.
然后它就返回拉。当我再次点击的时候它就正常拉
[/Quote]
我就6楼说的那样不行吗?
hengly88 2009-11-12
  • 打赏
  • 举报
回复
在ie7 ie8下。。select object的 innerHTML有Bug
jianshao810 2009-11-12
  • 打赏
  • 举报
回复
就是我第一次点击的时候 也好像 是已经加载那样。现在第一次点击它 只有一个 option.
然后它就返回拉。当我再次点击的时候它就正常拉
Click_Me 2009-11-12
  • 打赏
  • 举报
回复

谁说的 select不能用innerHTML?
sohighthesky 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jianshao810 的回复:]
谢谢,是动态添加拉。但它要跳一下,也就是说 我第一次点击,它只有一个“所有省份”,我再次点击才出现全部省份。请问 有解决方案吗?
[/Quote]
不太明白需要什么方案,你点击的时候判断select的length,如果大于1就不加载 了,否则就执行上面的代码不就行了
jianshao810 2009-11-12
  • 打赏
  • 举报
回复
谢谢,是动态添加拉。但它要跳一下,也就是说 我第一次点击,它只有一个“所有省份”,我再次点击才出现全部省份。请问 有解决方案吗?
jianshao810 2009-11-12
  • 打赏
  • 举报
回复
我尝试下先。谢谢回答
sohighthesky 2009-11-12
  • 打赏
  • 举报
回复
obj.options.add(new Option(item.name,item.name));
sohighthesky 2009-11-12
  • 打赏
  • 举报
回复

obj.options.add(new [color=#FF0000]Option
(item.name,item.name));
[/color]
sohighthesky 2009-11-12
  • 打赏
  • 举报
回复
这样写:
(select好像不能用innerHTML我以前用也不管用) :

for (var i = 0; i < json.length; i++) {
item = json[i];
//str += "<option value='" + item.name + "'>" + item.name + "</option>";
obj.options.add(new Options(item.name,item.name));
}
// alert(str);
//obj.innerHTML = str;

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧