你不知道的addLoadEvent和inserAfter
你不知道的addLoadEvent()和inserAfter()函数,因为这两个函数js并没有内置,但是在我们编写页面的时候复用度还是挺高的。因此,我在这里继续理理思路,敲一遍。
首先addLoadEvent(),顾名思义,页面加载的事件监听函数,有个想象的addEventLstener(),是DOM事件监听函数,因为不标准,所以对应的在IE中就有attactEvent()了,addLoadEvent()的复用可以解决window.onload每次只能绑定一个函数的弊端了,当然,你也可以给window.onload的匿名函数里面调用多个函数,如:
1 | window.onload = function(){ |
但是这样的代码可读性变差了,而且不利于样式与表现的分离,我们可以封装一个函数,基本思路是这样的:首先获取window.onload对象,判断其类型是否是function类型,如果是则说明已经绑定了函数,直接在后面追加函数调用,否则直接调用函数。
1 | function addLoadEvent(fn){ |
注意的是,当函数赋给window.onload时不需要(),因为这是调用函数,我们需要的是吧函数整体赋给它。
接下来学习insertAfter(),其实并没有这个函数,因为有一个我们熟悉的insertBefore(),然而我们完全可以利用js给我们提供的DOM操作的方法来手写一个insertAfter(),基本思路是这样的:首先获取父级节点,判断父级节点的最后一个节点是否为目标节点,如果是直接在父级节点里面追加新的节点,恰好在最后面,否则在目标节点的下一个节点前面插入节点。
1 | function insertAfter(newNode,targetNode){ |
此函数涉及DOM节点操作.parentNode
父级节点、.lastChild
最后一个子节点、.nextSibling
下一个兄弟节点、.appendChild()
追加子节点、.insertBefore()
节点前插入节点
多层嵌套: