DOM简介
javaScript组成?
javascript由哪几部分组成?
- ECMAScript:简称【ES】,它是由欧洲计算机协会,大概每年的六月中旬定制语法规范。
 - DOM:全称【document object model】 即为文档对象模型。其实就是内置的document对象,引用类型数据
 - BOM:全称【browser object model】即为浏览器对象模型。每一个浏览器厂商给程序猿提供了一些内置对象,可以获取浏览器的一些信息。
 
1.1节点树
概述:节点即为标签。节点之间的这种关系,我们称为“节点树”,因为很像一颗大树扎根。
dom【document object model】文档对象模型,你可以理解为是整个节点树最外层“根元素”。
dom其实就是js语言中内置引用类型document对象,dom对象经常用来操作节点(标签)
操作节点的样式,属性。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
</body>
</html>

dom属性
概述:在js当中,是引用数据类型,官方给我们提供了很多属性、方法,用来操作节点树上的节点
<head>
  <meta charset="UTF-8">
  <title>我是祖国的花朵</title>
</head>
<body>
</body>
</html>
<script type="text/javascript">
  // DOM:其实就是内置的document对象,引用类型数据
  console.log(document);
  console.log(typeof document)
</script>
<script type="text/javascript">
  // DOM:常用属性
  // documentElement:获取到节点树的html标签
  console.log(document.documentElement);
  // head:获取到节点树的head标签
  console.log(document.head)
  //title:获取到节点树的title文本
  console.log(document.title)
  //body:获取到节点body
  console.log(document.body)
</script>
dom方法
概述:dom对象,官方提供了很多方法来操作节点树上的标签。
document.getElementById
可以获取节点树上的任意节点,不过需要给标签添加id属性,通过id选择器进行选择
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style type="text/css">
    *{
      margin: 0;
      padding: 0;
    }
    #box{
      color: red;
      text-indent: 3em;
      background-color: gold;
    }
  </style>
</head>
<body>
<div id="box">我爱你我的祖国</div>
</body>
</html>
<script type="text/javascript">
  console.log(document.getElementById("box"));
  var element=document.getElementById("box");
</script>
前端代码是从上向下执行的代码,所以js需要放在代码的下面
注意:标签节点在js中属于引用类型数据
操作节点属性
我们通过dom方法获取到节点树上的任意节点(标签),经常通过(.)点语法来操作节点上的属性、文本、样式等。
操作节点属性
js当中经常通过dom获取节点,经常用来操作节点属性
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>我是祖国的花朵</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }
    /*#box{*/
    /*  color: cyan;*/
    /*  background-color: skyblue;*/
    /*  width: 300px;*/
    /*  height: 300px;*/
    /*  border-radius: 50%;*/
    /*  text-align: center;*/
    /*  line-height: 300px;*/
    /*}*/
    input{
      width: 300px;
      height: 200px;
      display: block;
      margin: 100px auto;
    }
  </style>
</head>
<body>
<div id="box" class="cur">我是祖国的未来</div>
<div>
  <input type="text" id="box1">
</div>
</body>
</html>
<script type="text/javascript">
  var div = document.getElementById("box");
  var box1 = document.getElementById("box1");
  console.log(div)
  console.log(div.id)
  console.log(box1.type)
  // ES6语法中不允许使用class关键字,所以只有属性,使用的是className
  console.log(div.className)
  console.log(div.classList)
  div.id = "newBox";
  
  box1.type="password";
</script>
- 可以通过DOM方法获取节点,进而操作节点属性
 - 通过节点名字利用点语法【属性名字】,可以获取节点某一属性的属性值,当然也可以通过JS动态设置对应的新的属性值
 
操作文本
可以通过DOM对象提供的方法获取对应的标签,我们也可以通过点语法操作节点文本
注意:操作节点文本分为两种情况
- 操作表单元素文本,需要通过value属性进行操作,input标签
 - 操作非表单元素文本,需要通过innerHtml属性进行操作,非input标签
 
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>我是祖国的花朵</title>
</head>
<body>
<p id="cur">我是祖国的未来</p>
<p>
  <input id="container" type="text" value="我是默认文本">
</p>
</body>
</html>
<script type="text/javascript">
  var p = document.getElementById("cur");
  console.log(p)
  console.log(p.innerHTML)
  console.log(p.innerText)
  p.innerHTML = "我是祖国的flower";
  var input = document.getElementById("container");
  console.log(input.value)
  input.value="我是新的文本";
</script>
操作节点样式
可以通过dom方法获取节点,可以操作节点行内样式
样式分为三种样式:行内样式、外部样式、内部样式
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>我是祖国的花朵</title>
<!--  内部样式-->
<!--  <style type="text/css">-->
<!--    *{-->
<!--      margin: 0;-->
<!--      padding: 0;-->
<!--    }-->
<!--    .container{-->
<!--      color: red;-->
<!--      border: 1px solid black;-->
<!--      width: 200px;-->
<!--      height: 200px;-->
<!--      text-align: center;-->
<!--      line-height: 200px;-->
<!--      font-size: 30px;-->
<!--      font-weight: bold;-->
<!--    }-->
<!--  </style>-->
</head>
<body>
<p id="container" style="width: 100px; height: 100px;color: red;background-color: cyan">
  我是一个锻炼
</p>
</body>
</html>
<script type="text/javascript">
  var elementById = document.getElementById("container");
  // 可以获取样式
  console.log(elementById.style.width)
  // 可以设置样式
  elementById.style.width="500px";
  // 可以设置新的样式
  elementById.style.fontSize="500px";
</script>
事件绑定
在网站中,用户经常进行鼠标移上某个元素、单击某个元素,这个元素可以对用户这个行为进行响应。像这种现象称之为“事件绑定”。人和机器交互。
注意:在js中只有标签才可以绑定事件。数组、JSON、函数、变量、循环语句这些是不能绑定事件的。
语法格式:
element onxxx=function(){
}
- onxxx 这些事件名字都是小写的。
 - 右侧部分是一个函数(事件处理函数):当用户触发事件的时候才会执行一次。
 
onclick|ondbclick
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>我是祖国的花朵</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }
    div{
      width: 100px;
      height: 100px;
      background-color: red;
      margin: 100px auto;
      text-align: center;
      line-hight: 100px;
    }
  </style>
</head>
<body>
<div id="box">我是祖国的花朵</div>
</body>
</html>
<script type="text/javascript">
  var div = document.getElementById('box');
  div.onclick = function () {
    div.style.backgroundColor='blue';
  }
</script>
- 右侧函数(事件处理函数)当用户触发事件的时候(比如单机、双击这个元素)才会执行
 - 可以给任意元素绑定单击事件(一般工作中,非表单元素绑定单击事件)
 
event事件对象
概述:任意节点树上的节点(标签),都可以绑定一个或者多个事件,当用户触发事件的时候,系统会自动给事件处理函数传递实参,而这个参数即位事件对象(event)
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/17202033.html
                    
                
                
            
        
浙公网安备 33010602011771号