递归、select&option

76 阅读1分钟

递归

  • 简单来说就是在函数之中再一次调用了函数自己

何时使用

  • 专门用于【遍历层级不明确的情况】 - DOM树和数据(children只能找到儿子层,找不到孙子层)

如何使用:2步

function 函数名(root){
1、第一层要做什么直接做
2、判断有没有下一层,如果有下一层则再次调用此方法,只不过传入的实参是自己的下一层
}
函数名(实际的根)

算法

  • 深度优先!优先遍历当前节点的子节点,子节点遍历完毕才会跳到兄弟节点

缺陷

  • 不要过多使用,性能相对较差,同时开启大量的函数调用,浪费内存,我们只在一个情况:【层级不明确】

绑定事件

在HTML上书写事件属性

  • <elem on事件名="函数名(实参)"></elem>

缺点

  • 不符合内容与样式与行为的分离原则
  • 无法动态绑定,一次只能绑定一个元素
  • 不支持绑定多个函数对象

在js中使用事件处理函数属性

  • elem.on事件名=function(){操作}

优点:

  • 符合内容与样式与行为的分离原则
  • 动态绑定,一次能绑定多个元素

缺点:

  • 不支持绑定多个函数对象

在js中使用事件API

  • 主流:elem.addEventListener("事件名",callback);
  • 老IE:elem.attachEvent("on事件名",callback);

兼容

if(elem.addEventListener){
	elem.addEventListener("事件名",callback);
}else{
	elem.attachEvent("on事件名",callback);
}

优点

  • 符合内容与样式与行为的分离原则
  • 动态绑定
  • 支持绑定多个函数对象

缺点

  • 有兼容性问题

select&option

  • select&option只有他们可以简化创建元素&上树:select.add(new Option("innerHTML","value"));