childnodes.add和appendchild方法有什么区别?childnodes.add方法:
1.
var oOption = document.createElement("OPTION");
oProvince.options.add(oOption);
oOption.innerText ="...";2.var oOption = document.createElement("OPTION");
oOption.innerText ="...";
oProvince.options.add(oOption);
为什么这样会报错 ,而用appendchild方法不会报错。
知道这个问题比较简单,但我刚学js,希望清楚的牛人给详细解释一下。
注:
看到网上有那个儿子穿衣服和老头生儿子的比喻,但还是不太明白。
childnodes 兼容性不好!
建议使用 appendchild!!对于 select option最好是: oProvince.options.add(new Option("",""));
$("#city").append("<option></option>").val().html();javascript:
var newoption=document.createElement("Option");
newoption.innerText="";
newoption.value="";
$getid().appendChild(newoption);
options.add并不是标准。
另外appendChild在ie上也有内存泄露的问题。一般会用insertBefore来代替另另外
两种不同的标准api之间不能通信
如果要增加option,要这样
options.add(new Option(index, value));
方法一:
oProvince.options.add(document.getElementById("sd"));
方法二:
oProvince.appendChild(document.getElementById("sd"));方法一出错,而方法二没问题,查了一下手册:Before you can add an element to a collection, you must create it first by using the createElement method.options.add必须添加的是新创建的元素而不能是已存在的元素,而给innerText赋值以后,可能就会把它当作一个已存在的元素了,所以会报错。
不知这样解释对不对,欢迎大家多发表见解!
var op = document.createElement('option');
op.text = '这是文字';
op.value = '这是值';
selectObj.options.add(op);
那op.text和innerText有什么区别呢?
appendchild 追加
我的理解 。
childnodes.add 是不是还要带个index参数 。
一般还是后者用得多点 。
应该说,只有appendChild方法才可以append已经存在的元素。当节点需要移动的时候,不需要把节点从节点树上删除,而只需要appendChild一下。