为什么insertBefore()的第二个参数不填,没有效果??
我本来也理所当然认为必须,但是看了你的回复后,突发奇想,去试了一下,结果发现,第二个参数可以省略,省略后效果等同 appendChild(),以下是两张效果和源码图:
至于你说的没效果,应该是你其他地方的代码疏忽了,你再检查看看。
otest.insertBefore(newnode,otest.childNodes[1]) 什么意思
答案:
在指定元素前插入元素或者文本,这需要在调用insertBefore的时候传2个参数,第一个参数newnode 是要插入的元素,第二个参数otest.childNodes[1] 是坐标元素,比如有ABCD四个元素,需要将一段文本插入到B的前面,那么参数二就是B。同理:otest.childNodes[1]就是你要把这个元素插入到的位置;
otest.childNodes[1]是个可选参数,如果不填的话,为了保证该JS在火狐下的兼容性,应该传个null进去。
newnode(a) Node 对象 必需。需要插入的节点对象。
existingnode(b) Node object 可选。在其之前插入新节点的子节点。如果未规定,则 insertBefore 方法会在结尾插入 newnode。