问答详情
源自:9-13 插入节点insertBefore()

insertBefore(a,b),参数2是必须的参数吗?

为什么insertBefore()的第二个参数不填,没有效果??

提问者:_十年 2016-09-30 21:08

个回答

  • 慕粉3951534
    2016-10-13 11:18:48

    我本来也理所当然认为必须,但是看了你的回复后,突发奇想,去试了一下,结果发现,第二个参数可以省略,省略后效果等同 appendChild(),以下是两张效果和源码图:

    57fefcb80001441705000228.jpg

    57fefcb90001a89e05000222.jpg


    至于你说的没效果,应该是你其他地方的代码疏忽了,你再检查看看。


  • Amosxu
    2016-10-01 11:48:50

    otest.insertBefore(newnode,otest.childNodes[1])  什么意思

    答案:

    在指定元素前插入元素或者文本,这需要在调用insertBefore的时候传2个参数,第一个参数newnode 是要插入的元素,第二个参数otest.childNodes[1] 是坐标元素,比如有ABCD四个元素,需要将一段文本插入到B的前面,那么参数二就是B。同理:otest.childNodes[1]就是你要把这个元素插入到的位置; 

    otest.childNodes[1]是个可选参数,如果不填的话,为了保证该JS在火狐下的兼容性,应该传个null进去。


  • Amosxu
    2016-10-01 10:10:28

    newnode(a)    Node 对象    必需。需要插入的节点对象。    

    existingnode(b)    Node object    可选。在其之前插入新节点的子节点。如果未规定,则 insertBefore 方法会在结尾插入 newnode。