<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 3</title><script>
function add(){
var tt=new Option("11")
var tt1=new Option("22"); //此处tt为引用类型变量,是一个对象
f1.sel1.add(tt);
f1.sel2.add(tt1);
}
</script>
</head><body>
<form name="f1">
<select name="sel1"></select><select name="sel2"></select>
<p>
<input type="button" name="btn" onClick="add()" value="添加列表">
</p>
</form>
</body></html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 3</title><script>
function add(){
var tt=new Option("11")
var tt1=new Option("22"); //此处tt为引用类型变量,是一个对象
f1.sel1.add(tt);
f1.sel2.add(tt1);
}
</script>
</head><body>
<form name="f1">
<select name="sel1"></select><select name="sel2"></select>
<p>
<input type="button" name="btn" onClick="add()" value="添加列表">
</p>
</form>
</body></html>
var str="<option value='111'>"+"aaa"+"</option><option value='222'>'bbb'</option>";
先看第一个问题,select一般通过outerHTML来改变比较安全:
<select id="sel"></select><button id="btn">添加列表</button>
<script>
btn.onclick=function(){
str=sel.outerHTML.replace(/^(<.*?>).*/,"$1")+"<option value='111'>'aaa'</option><option value='222'>'bbb'</option>"+sel.outerHTML.replace(/.*(<.*?>)$/,"$1");
sel.outerHTML=str;
alert(sel.innerHTML)
}
</script>此外要注意,<button>的结束标记是</button>
<select id='sel1'></select><select id='sel2'></select>
<button id="btn">添加列表</button>
<script>
function cloneOption(op){
return new Option(op.text,op.value)
}
function btn.onclick(){
var tt=new Option('11','aa');
sel1.add(tt);
sel2.add(cloneOption(tt));
}
</script>
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.outerHTML=sel.outerHTML.replace('</SELECT>',str+"</select>")
}
</script>2.
<script>
function btn.onclick(){
var tt=new Option("11","aa")
a=tt.cloneNode()
a.text='11'
a.value='aa'
sel2.options.add(a)
sel1.options.add(tt);
}
</script>
-------------------------------------------------------------------------
cloneNode方法应该是继承来的一个方法,如果要实现的话还要自己为Option添加方法
-------------------------------------------------------------------------其实option对象的cloneNode方法是被实现了的。不过如你所说,克隆出来的结果不是一个真正的option对象,而是一个“HTML Node”对象,所以不能用add方法插入文档中,而必须通过appendChild方法。此外文档中指出,cloneNode方法在文档层次中复制一个对象的引用,也就是说,在Option对象被插入文档中并且页面被重新计算前,不能克隆它:<select id='sel1'></select><select id='sel2'></select>
<button id="btn">test</button>
<script>
function btn.onclick(){
var tt=new Option('11','aa');
sel1.add(tt);
sel2.appendChild(tt.cloneNode(true));
}
</script>(注意,sel1.add(tt);这一句不先运行,在克隆的时候会死浏览器。)但是试验表明节点操作在select和option对象中的实现显然不安全,所以我宁可自己定义更安全的方法,而不是因为IE没有实现option的克隆。
var tt=new Option('11','aa');
tt.serno='110';
tt.sertype='100';
......所以使用克隆方便一些。非常感谢大家的支持!
function cloneObject(object)
{
function clsTemp(){}
clsTemp.prototype = object;
return new clsTemp()
}对DOM对象
document.createElement
和
document.cloneNode将比较可靠