一、Math的方法

1、Math.abs(求绝对值);

2、Math.ceil()向上取整

无论是正数还是负数都是取最大值

  1. Math.ceil(1.2); //2
  2. Math.ceil(-1.2); //-1

3、Math.floor()向下取整

  1. Math.floor(1.8); //1
  2. Math.floor(-1.8); //-2

4、Math.round()四舍五入

负数的四舍五入有点特殊 Math.round(-1.51) //-2

  1. Math.round(1.5)
  2. 2
  3. Math.round(1.2)
  4. 1
  5. Math.round(-1.5);
  6. -1
  7. Math.round(-1.51);
  8. -2

5、Math.min() / Math.max() 取最小值/最大值

  1. Math.min(1, 5, 9);
  2. 1
  3. Math.max(1, 5, 9);
  4. 9
  5. var ary = [5, 6, 7];
  6. undefined
  7. Math.max(...ary); //...ary 展开数组ary
  8. 7

6、Math.random() [0-1)之间的随机数(包含0,不包含1)

  • 获m取n-m之间的随机数
    • Math.random()*(m-n)+n
      • 10-20
      • Math.random*10+10
  • a、 Math.random是取[0, 1)的数;
  • b、 取[min, max]的随机整数时使用如下公式:
    Math.floor(Math.random().(max-min+1)+min)
  • c、 取[min.max)的随机整数时使用如下公式:

Math.floor(Math.random().(max-min)+min)

  • d、 取(min, max]的随机整数时使用如下公式:

Math.floor(Math.random().(max-min)+min+1)

7、Math.pow()

  1. Math.pow(2, 3);
  2. 8

8、Math.sqrt() 开平方

二、DOM操作

DOM tree

浏览器在加载页面的时候,会首先

domtree.gif

dom操作

  1. <body>
  2. <div id="main">
  3. <p></p>
  4. <p></p>
  5. <p></p>
  6. <span class="box">main里边</span>
  7. </div>
  8. <span class="box"></span>
  9. <span class="box"></span>
  10. <span class="box"></span>
  11. <input type="text" name="username" id="">
  12. <script>
  13. // id的上下文只能是document
  14. var main = document.getElementById("main");
  15. // 通过name属性获取元素,其上下文也只能是document
  16. var names = document.getElementsByName("username");
  17. // 通过标签名
  18. var ps = document.getElementsByTagName("p");
  19. // 通过类名获取元素
  20. var obox = document.getElementsByClassName("box");
  21. var obox1 = main.getElementsByClassName("box");
  22. // 通过选择器获取想要的元素
  23. var ele = document.querySelector("#main>p");
  24. var eles = document.querySelectorAll("#main p");
  25. // 获取html元素
  26. var html = document.documentElement;
  27. // 获取head元素
  28. var head = document.head;
  29. // 获取body
  30. var body = document.body;
  31. // 动态获取一屏幕的宽度
  32. var sw = document.documentElement.clientWidth ||document.body.clientWidth;
  33. var sh = document.documentElement.clientHeight|| document.body.clientHeight;
  34. </script>
  35. </body>

三、节点类型(5种)

  1. 文档节点
    • nodeType:9
    • nodeName:”#document”
    • nodeValue:null
  2. 属性节点
    • nodeType:2
    • nodeName: 属性名
    • nodeValue: 属性值
  3. 元素节点
    • nodeType:1
    • nodeName: 大写的标签名
    • nodeValue:null
  4. 注释节点
    • nodeType:8
    • nodeName: “#comment”
    • nodeValue: 注释的内容
  5. 文本节点
    • nodeType:3
    • nodeName: “text”
    • nodeValue: 文本内容

四、节点操作

  • parentNode 获取父元素节点
  • childNodes 获取所有的子节点(childNodes)
  • children 获取所有的子元素(IE6-8不兼容)
  • previousSibling 获取元素的上一个哥哥节点
  • previousElementSibling 获取元素的上一个哥哥元素(IE6-8不兼容)
  • nextSibling 获取下一个兄弟节点
  • nextElementSibling 获取下一个兄弟元素(IE6-8不兼容)
  • firstChild 获取当前节点的第一个子节点
  • firstElementChild 获取当前节点的第一个子元素(IE6-8不兼容)
  • lastChild 获取当前节点的最后一个子节点
  • lastElementChild 获取当前节点的最后一个子元素(IE6-8不兼容)

五、练习题

1、手动封装一个获取某节点下面的所有子元素

  1. // 手动封装一个获取某节点下面的所有子元素
  2. var main = document.getElementsByClassName("main")[0];
  3. function children(node) {
  4. var childs = node.childNodes;
  5. // console.log(childs);
  6. var newChindren = [];
  7. for (i=0;i<childs.length;i++) {
  8. // 判断该节点是否为元素节点
  9. if (childs[i].nodeType == 1) {
  10. newChindren.push(childs[i]);
  11. }
  12. }
  13. return newChindren;
  14. }
  15. var res = children(main);
  16. console.log(res);

2、封装一个获取某节点的上一个兄弟元素

  1. // 封装一个获取某节点的上一个兄弟元素
  2. var p2 = document.getElementsByClassName("p2")[0];
  3. function fn(node) {
  4. var sib = node.previousSibling;
  5. // 当这个兄弟节点不是元素节点的时候, 继续向上查找下一个兄弟节点!!
  6. while (sib && sib.nodeType !== 1) {
  7. // return fn(sib);
  8. sib = sib.previousSibling;
  9. }
  10. return sib;
  11. }
  12. var res2 = fn(p2);
  13. var res3 = fn(p1);
  14. console.log(res2);
  15. console.log(res3);

六、dom的增删改

1、创建新标签

  • document.createElement(“标签”); //创建标签

2、创建新的文本节点

  • document.createTextNode(“文本”); //创建文本节点

3、把元素追加到一个新的容器的末尾

  • 容器.appendChild(元素); //把元素追加到一个容器的末尾

4、把元素作为父元素的第一个子元素进行添加

  • 容器.insertBefore(newele,oldele);

5、删除某个元素

  • 容器.removeChild(ele);

6、克隆元素

  • 元素.cloneNode();
    • 括号里不写参数,就只是克隆当前的这个元素;
    • 括号里边写true,会把这个元素包括里面的所有后代元素都克隆。

7、setAttribute/getAttribute/removeAttribute 设置/获取/删除 自定义属性

此方法是添加到DOM结构中

  1. box.setAttribute("index","0")
  2. box.getAttribute("index")
  3. box.removeAttribute("index")

这种方法是存在堆内存,console.dir(ele)查看ta的属性

  • ele.属性 = 属性值; //设置
  • ele.属性; //获取
  • delete ele.属性; //删除