很迷惑的js问题?

Rather_lonely 2010-08-04 10:17:22
我想用js创建一个下拉框,
代码如下:
var select1 = document.createElement("select");
select1.options[0] = new Option("11","aa");
select1.options[1] = new Option("22","bb");
document.body.appendChild(select1);
这样子是可以的;

为什么这样子就不可以了:

var select1 = document.createElement("select");
var op1 = document.createElement("option");
op1.id="11";
op1.innerHTML="aa";
var op2 = document.createElement("option");
op2.id="22";
op2.innerHTML="bb";
select1.options[0] = op1;//这里会报错,说不支持的对象或属性
select1.options[1] = op2;//这里会报错,说不支持的对象或属性

document.body.appendChild(select1);

以下这2种写法返回的对象不是一样的吗,为什么前一种就会报错呢
var op1 = document.createElement("option");
op1.id="11";
op1.innerHTML="aa";
var op1 = new Option("11","aa");

请大家解答下,谢谢了
...全文
140 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveting_1002 2010-08-10
  • 打赏
  • 举报
回复
同意上楼观点
GlyphVectory 2010-08-10
  • 打赏
  • 举报
回复
select.options.add(new Option(value,text))
guilipan 2010-08-05
  • 打赏
  • 举报
回复
因为你的option虽然创建了,但是没有添加到DOM树中来,添加到DOM树是没办法通过select1.options[0] = op1这样的操作来实现饿,这仅仅是添加了一个引用关系而已,添加到DOM树的话,你需要把select1.appendChild(op1)等类似的方式
  • 打赏
  • 举报
回复
要保持用法的一致性.好好体会一下:
<body>
<SCRIPT language=JavaScript>
<!--

var select1 = document.createElement("select");
select1.options[0] = new Option("11","aa");
select1.options[1] = new Option("22","bb");
document.body.appendChild(select1);

var select2 = document.createElement("select");
var op1 = document.createElement("option");
op1.id="11";
op1.innerHTML="aa";
var op2 = document.createElement("option");
op2.id="22";
op2.innerHTML="bb";
select2.appendChild(op1);
select2.appendChild(op2);
document.body.appendChild(select2);
//-->
</SCRIPT>
lzh_me 2010-08-05
  • 打赏
  • 举报
回复
4楼的就是完整的步骤。有时候我们需要遵守一些规则的,否则不认。
jokenit 2010-08-05
  • 打赏
  • 举报
回复
新手取经...
yankunlin 2010-08-05
  • 打赏
  • 举报
回复
正解。。。
myheartforyou 2010-08-05
  • 打赏
  • 举报
回复
1楼正解
xk1126 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]
第一种是Option对象,第二种是HTML对象
[/Quote]

uppppppppp
马老虎 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]

第一种是Option对象,第二种是HTML对象
[/Quote]
+1
liuzuowei007 2010-08-05
  • 打赏
  • 举报
回复
1楼的解释很精辟 赞一个
yousite1 2010-08-04
  • 打赏
  • 举报
回复
select1.add(op2)或试试
select1.add(new Option("1", "文本"));
Dota_noney 2010-08-04
  • 打赏
  • 举报
回复
同意楼上的观点
孟子E章 2010-08-04
  • 打赏
  • 举报
回复
第一种是Option对象,第二种是HTML对象

87,907

社区成员

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

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