DOM和BOM

微信图片_20210708204434.png

window

所有的对象或者属性,在访问的时候都必须有前缀
window是所有对象的祖宗,凡是省略前缀的对象,默认它的前缀就是window
只要是全局变量,它的前缀就是window

  1. var i = 123;
  2. var fun = function(){
  3. var i = 666;
  4. console.log(window.i); //123
  5. }
  6. window.fun();

三个弹出框

1、alert:将内容打印至弹出框上;

  1. alert("确认要付款嘛?");

2、prompt([提示信息],[默认值]):返回一个字符串;

  1. var x = prompt("请输入数据",666);
  2. console.log(x+1); //6661

3、window.confirm([提示信息]):返回值为boolean

  1. var flag = window.confirm("确认要付款嘛?");
  2. console.log(flag); //点击确定会打印true;点击取消会打印flase;

两个定时器:

1、循环定时器:setInterval clearInterval(执行的函数,时间间隔); ——祥见day8 02-日期Date
2、延时定时器:setTimeout() 设置延时定时器
clearTimeout() 取消延时定时器
见第九天——延时定时器案例;

onload:延迟加载,页面全部加载完毕后,在执行的代码

  1. <script>
  2. window.onload = function(){
  3. var oBox = document.getElementById("box");
  4. console.log(oBox.innerHTML);
  5. }
  6. </script>
  7. <body>
  8. <p id="box">123</p>
  9. </body>

location:地址对象

  1. console.log(location.href); //打印当前页面的地址;
  2. location.href = "http://www.4399.com"; //修改当前页面地址
  3. location.replace("http://www.baidu.com"); //修改当前页面地址
  4. location.reload(); //刷新页面

点击按钮跳转页面案例:见第九天——location地址对象

document:

1、document.write的特点:
(1)字符串解析:能解析成HTML元素的字符串,就会按照HTML元素的功能执行效果

  1. document.write("123");
  2. document.write("<br>");
  3. document.write("456");

(2)在与事件连用时,会直接覆盖原页面;

  1. <body>
  2. <button type="button" id="btn">点击</button>
  3. </body>
  4. <script>
  5. var oBtn = document.getElementById("btn");
  6. oBtn.onclick = function(){
  7. document.write("嘿嘿嘿");
  8. }
  9. </script>

2、找对象的六种方法9
(1)document.getElementById(id名):返回id所对应的单个对象;

  1. <div id="box"></div>
  2. var oBox = document.getElementById("box");

(2)document.getElementsByTagName(标签名):返回标签名相同的所有元素,存入数组
中;

  1. <ul>
  2. <li></li>
  3. <li></li>
  4. <li></li>
  5. </ul>
  6. var oLis = document.getElementsByTagName("li");
  7. oLis[0].style.backgroundColor = color; //把颜色赋值给第一个li

(3)document.getElementsByClassName(类名):返回类名相同的所有元素,存入数组中

  1. <input type="text" value="123" class="txt"></br>
  2. <input type="text" value="456" class="txt"></br>
  3. <input type="text" value="777" class="txt"></br>
  4. <input type="text" value="888" class="txt"></br>
  5. var oTexts = document.getElementsByClassName("txt");
  6. for(var i=0; i<oTexts.length; i++){
  7. console.log(oTexts[i].value);
  8. }

(4)document.getElementsByName(name):返回name相同的所有元素,存入数组中

  1. <input type="text" value="123" name="t"/></br>
  2. <input type="text" value="456" name="t"/></br>
  3. <input type="text" value="777" name="t"/></br>
  4. <input type="text" value="888" name="t"/></br>
  5. var oTexts = document.getElementsByName("t");

(5)document.querySelector(选择器):选择器,返回选择器对应的单个元素(标签,类,id)

  1. <p>123</p>
  2. <span id="s">666</span>
  3. <div class="box">963</div>
  4. var oP = document.querySelector("p");
  5. console.log(oP.innerHTML);
  6. var oSpan = document.querySelector("#s");
  7. console.log(oSpan.innerHTML);
  8. var oDiv = document.querySelector(".box");
  9. console.log(oDiv.innerHTML);

(6)document.querySelectorAll():选择器,返回选择器对应的多个元素(标签,类)

  1. <input type="text" value="123" class="txt"></br>
  2. <input type="text" value="456" class="txt"></br>
  3. <input type="text" value="777" class="txt"></br>
  4. <input type="text" value="888" class="txt"></br>
  5. var oTexts = document.querySelectorAll(".txt");

history:(见第九天——history)
(1)back() 加载 history 列表中的前一个 URL。
(2)forward() 加载 history 列表中的下一个 URL。
(3)go() 加载 history 列表中的某个具体页面,或者要求浏览器移动到指定的页面数量(负数为后退,正数为前进)

DOM

微信图片_20210708210207.png

1、根据层次关系访问节点: (包括文本和元素)
(1)firstChild 返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
(2)lastChild 返回节点的最后一个子节点
(3)nextSibling 下一个节点
(4)previousSibling 上一个节点
2、通过层级关系访问元素节点:
(1)firstElementChild 返回节点的第一个子节点,最普遍的用法是访问该元素的文本节

(2)lastElementChild 返回节点的最后一个子节点
(3)nextElementSibling 下一个节点
(4)previousElementSibling 上一个节点

  1. <body>
  2. <p>你好!</p>
  3. <ul>
  4. <li>1</li>
  5. <li>2</li>
  6. <li>3</li>
  7. <li>4</li>
  8. </ul>
  9. </body>
  10. var str = document.body.firstElementChild.nextElementSibling.firstElementChild.nextElementSibling.innerHTML;
  11. console.log(str); //2

3、节点类型的判断 nodeType
元素节点返回1
文本节点返回3

  1. <body>
  2. <p>你好!</p>
  3. </body>
  4. var oP = document.querySelector("p");
  5. console.log(oP.nodeType); //1
  6. console.log(oP.firstChild.nodeType); //3

4、节点的插入:(案例:见第九天——节点的插入)
(1)创建元素:document.createElement(标签名):返回一个创建的HTML元素;
(2)在父元素上追加子元素:父元素.appendChild(子元素):将子元素挂至父元素上;

  1. <script type="text/javascript">
  2. var oH1 = document.createElement("h1");
  3. oH1.innerHTML = "静夜思";
  4. document.body.appendChild(oH1);
  5. var oP1 = document.createElement("p");
  6. oP1.innerHTML = "窗前明月光";
  7. document.body.appendChild(oP1);
  8. </script>

与这个效果一致:
微信图片_20210708210524.png
5、节点的删除:(案例:见第九天——节点的删除)
目标节点.remove();

  1. <body>
  2. <div id="box">嘿嘿嘿</div>
  3. </body>
  4. var oBox = document.getElementById("box");
  5. oBox.remove();

动态创建表格

见第十天——动态创建表格案例
this是函数体内的内置对象
this在与事件连用时,this代表操作的元素本身

  1. oDel.onclick = function(){
  2. this.parentNode.remove();
  3. }

childNodes和children

1、父节点.childNodes:返回父节点对应的所有子节点,包含文本节点和元素节点,返回一个数组;

  1. <body>
  2. <ul>
  3. <li>1</li>
  4. <li>2</li>
  5. <li>3</li>
  6. </ul>
  7. </body>
  8. var oUl = document.querySelector("ul");
  9. var oLis = oUl.childNodes;
  10. //删除文本节点
  11. for(var i=0; i<oLis.length; i++){
  12. if(oLis[i].nodeType == 3){
  13. oLis[i].remove();
  14. }
  15. }
  16. for(var i=0; i<oLis.length; i++){
  17. console.log(oLis[i].innerHTML); //1 2 3
  18. }

2、父节点.children:返回父节点对应的所有子节点,只包含元素节点,返回一个数组;

  1. <body>
  2. <ul>
  3. <li>1</li>
  4. <li>2</li>
  5. <li>3</li>
  6. </ul>
  7. </body>
  8. var oUl = document.querySelector("ul");
  9. var oLis = oUl.children;
  10. for(var i=0; i<oLis.length; i++){
  11. console.log(oLis[i].innerHTML); //1 2 3
  12. }

innerText、outerHTML和innerHTML

clipboard.png
(1)innerText:打印文本的内容,不包含任何标签;
(2)outerHTML:打印包含自身标签的所有内容;
(3)innerHTML:该标签中的所有内容;

  1. <div id="box">
  2. 我是<span>隔壁王叔叔</span>
  3. </div>
  4. var oDiv = document.querySelector("#box");
  5. //1、innerText
  6. console.log(oDiv.innerText); //我是隔壁王叔叔
  7. //2、outerHTML
  8. console.log(oDiv.outerHTML); //全部打印
  9. //3、innerHTML
  10. console.log(oDiv.innerHTML); //我是<span>隔壁王叔叔</span>

使用innerHTML添加元素:

  1. <body>
  2. <ul>
  3. </ul>
  4. </body>
  5. var oUl = document.querySelector("ul");
  6. oUl.innerHTML = "<li>heihei</li>";
  7. oUl.innerHTML += "<li>xixi</li>"
  8. for(var i=0; i<10; i++){
  9. oUl.innerHTML += "<li class='test'>"+i+"</li>";
  10. }

添加元素之后:
clipboard (1).png
运行的效果:
image.jpeg

属性和样式的读写

1、属性的读和写:
(1)通过打点的方式;

  1. <body>
  2. <div id="box">
  3. </div>
  4. </body>
  5. var oBox = document.querySelector("#box");
  6. //写
  7. oBox.id = "heihei";
  8. //读
  9. console.log(oBox.id); //heihei

(2)通过getAttribute / setAttribute:

  1. <body>
  2. <div id="box">
  3. </div>
  4. </body>
  5. var oBox = document.querySelector("#box");
  6. //写
  7. oBox.setAttribute("id","haha");
  8. //读
  9. console.log(oBox.getAttribute("id")); //haha

2、为元素添加自定义属性
(1)通过打点的方式

  1. <body>
  2. <div id="box">
  3. </div>
  4. </body>
  5. var oBox = document.querySelector("#box");
  6. oBox.a = "hehe";
  7. console.log(oBox.a); //hehe

(2)通过getAttribute / setAttribute

  1. <body>
  2. <div id="box">
  3. </div>
  4. </body>
  5. var oBox = document.querySelector("#box");
  6. oBox.setAttribute("b","yingyingying");
  7. console.log(oBox.getAttribute("b")); //yingyingying

3、样式的读和写:
(1)行内样式的读写:

  1. <body>
  2. <div id="box" style="color: red;"></div>
  3. </body>
  4. var oBox = document.querySelector("#box");
  5. //写
  6. oBox.style.color = "blue";
  7. //读
  8. console.log(oBox.style.color); //blue

(2)非行内样式的读写:

  1. <style type="text/css">
  2. #box1{
  3. font-size: 22px;
  4. }
  5. </style>
  6. <body>
  7. <div id="box1"></div>
  8. </body>
  9. var oBox1 = document.querySelector("#box1");
  10. //写
  11. oBox1.style.fontSize = "100px";
  12. //读
  13. console.log(getComputedStyle(oBox1,false)["fontSize"]); //100px

insertBefore

父节点.insertBefore(目标节点,参照节点):将目标节点插入到参照节点之前

  1. <body>
  2. <ul>
  3. <li>1111</li>
  4. <li>2222</li>
  5. <li>3333</li>
  6. </ul>
  7. <button type="button">添加</button>
  8. </body>
  9. var oBtn = document.querySelector("button");
  10. var oUl = document.querySelector("ul");
  11. oBtn.onclick = function(){
  12. var oLi = document.createElement("li");
  13. oLi.innerHTML = "晶晶";
  14. oUl.insertBefore(oLi,oUl.children[2]);//将oLi插入到<li>3333</li>之前
  15. // oUl.insertBefore(oLi,null); //将oLi插入到<li>3333</li>之后
  16. }

DOM和BOM - 图7

offsetTop

DOM和BOM - 图8

  1. <style type="text/css">
  2. #box{
  3. width: 200px;
  4. height: 100px;
  5. position: absolute;
  6. left: 200px;
  7. top: 200px;
  8. background-color: deepskyblue;
  9. }
  10. </style>
  11. <body>
  12. <div id="box"></div>
  13. </body>
  14. var oBox = document.querySelector("#box");
  15. //写 写必须是以px为单位的字符串
  16. oBox.style.width = 300 + "px";
  17. oBox.style.height = "500px";
  18. oBox.style.left = "400px";
  19. oBox.style.top = "600px";
  20. //读 offset相关的属性只能读,返回的是数字
  21. console.log(oBox.offsetWidth); //数字 300
  22. console.log(oBox.offsetHeight); //数字 500
  23. console.log(oBox.offsetLeft); //数字 400
  24. console.log(oBox.offsetTop); //数字 600
  25. console.log(getComputedStyle(oBox,false)["width"]); //字符串 300px
  26. console.log(getComputedStyle(oBox,false)["height"]); //字符串 500px
  27. console.log(getComputedStyle(oBox,false)["left"]); //字符串 400px
  28. console.log(getComputedStyle(oBox,false)["top"]); //字符串 600px

获取滚动条高度:兼容写法

  1. IE IE<br />var _top = document.documentElement.scrollTop || document.body.scrollTop;
  1. <style type="text/css">
  2. body {
  3. height: 1000px; //使页面出现滚动条
  4. }
  5. </style>
  6. <script type="text/javascript">
  7. window.onscroll = function(){
  8. var _top = document.documentElement.scrollTop || document.body.scrollTop;
  9. console.log(_top); //拖动滚动条时会打印滚动条的高度
  10. }
  11. </script>
  1. <style type="text/css">
  2. body {
  3. height: 1000px;
  4. }
  5. #btn {
  6. position: absolute;
  7. top: 900px;
  8. left: 0;
  9. }
  10. </style>
  11. <body>
  12. <button type="button" id="btn">回到顶部</button>
  13. </body>
  14. var oBtn = document.querySelector("#btn");
  15. oBtn.onclick = function(){
  16. document.documentElement.scrollTop = document.body.scrollTop = 0;
  17. } //点击按钮(回到顶部)就会回到顶部