高难问题,特别邀请emu,ruming,骆驼,等高手来看看这个问题!关于select 和 innerHTML
大家来看看这个实验:
问题1:
<select id="sel"></select>
<button id="btn">添加列表<button>
<script>
btn.onclick=function(){
str="<option value='111'>'aaa'</option><option value='222'>'bbb'</option>";
sel.innerHTML=str;//下拉框没反应
alert(sel.innerHTML);//更奇怪的在这里,结果不等于str,少了前面一点东西
}
</script>
//这是IE的一个bug,已经找到,请看:http://support.microsoft.com/default.aspx?sd=msdn&scid=kb;en-us;276228
问题2:
试验下面代码:
<select id='sel1'></select><select id='sel2'></select>
<button id="btn">添加列表</button>
<script>
function btn.onclick(){
var tt=new Option('11','aa'); //此处tt为引用类型变量,是一个对象
sel1.add(tt);
sel2.add(tt);//此处会出错
</script>
对错误的原因分析:此处tt是对象,为引用类型变量,所以不能这样使用,但我把程序改为:
function btn.onclick(){
var tt=new Option('11','aa');
sel1.add(tt);//<==>sel1.options[sel1.length]=tt;
sel2.add(tt.cloneNode(true));
/*还会出错,why?为什么将引用类型拷贝了一个还是不行??那该怎么办?如果我想同时在两个列表框中添加项,不能用
sel2.add(new Option('aa','11'));这种形式,该怎么办?谁有办法让一个对象同时加到两个列表里面???
</script>
问题三:innerHTML对象写元素是只读的?table,tbody,tr,是的,如果写就会出错,我试过?select 对innerHTML好像不是只读的,但会出错!各位给点好的建议!http://support.microsoft.com/default.aspx?sd=msdn&scid=kb;en-us;239832
现在关键是第二个问题,不知道怎么解决