javaScript的学习(中)

javaScript的学习(上)里面,我们提到过 JavaScript = ECMAScript + JavaScript自己特有的东西 (BOM+DOM),这篇博文就是主要来讲DOM

DOM:

1、 Document Object Model 文档对象模型
	将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行 CRUD(增删改查)的动态操作

2、W3C DOM 标准被分为 3 个不同的部分:

  (1) 核心 DOM - 针对任何 结构化文档(脚本语言)的标准模型
		* Document:文档对象
		* Element:元素对象
		* Attribute:属性对象
		* Text:文本对象
		* Comment:注释对象

		* Node:节点对象,其他5个的父对象
  (2)XML DOM - 针对 XML 文档的标准模型
  (3) HTML DOM - 针对 HTML 文档的标准模型





(1)核心DOM模型:
	* Document:文档对象
		1. 创建(获取):在html dom模型中可以使用window对象来获取
			  window.document
			  document
		2. 方法:
			- 获取Element对象:
				 getElementById()	: 根据id属性值获取元素对象。id属性值一般唯一
				 getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组
				 getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组
				 getElementsByName(): 根据name属性值获取元素对象们。返回值是一个数组
			- 创建其他DOM对象:
			   	 createAttribute(name)
            	 createComment()
            	 createElement()
            	 createTextNode()
		3. 属性
			Element:元素对象
			  - 获取:
					document.getElementById("id值"):
			  - 方法:
			        removeAttribute():删除属性
			        setAttribute():设置属性
			
	* Node:节点对象,其他5个的父对象
		1、特点:所有dom对象都可以被认为是一个节点
		2、方法:
			 CRUD dom树:
				 appendChild():向节点的子节点列表的结尾添加新的子节点。
				 removeChild()	:删除(并返回)当前节点的指定子节点。
				 replaceChild():用新节点替换一个子节点。
		3、属性:
			 parentNode 返回节点的父节点。

1、如何改变 HTML 元素的内容 (innerHTML)

document.getElementById("p1").innerHTML="新文本!";

2、如何改变 HTML 元素的样式 (CSS)
(1)通过style属性

document.getElementById("p2").style.color="blue";

(2)通过calssName属性
这个方法就需要提前定义好类选择器的样式,通过元素的 className 属性来设置其 class 属性

p2.calssName = "div";

事件监听机制:

* 概念:某些组件被执行了某些操作后,触发某些代码的执行。	
	  事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了
	  事件源:组件。如: 按钮 文本输入框...
	  监听器:代码。
	  注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。

* 常见的事件:
	1. 点击事件:
		1. onclick:单击事件
		2. ondblclick:双击事件
	2. 焦点事件
		1. onblur:失去焦点
		2. onfocus:元素获得焦点。

	3. 加载事件:
		1. onload:一张页面或一幅图像完成加载。

	4. 鼠标事件:
		1. onmousedown	鼠标按钮被按下。
		2. onmouseup	鼠标按键被松开。
		3. onmousemove	鼠标被移动。
		4. onmouseover	鼠标移到某元素之上。
		5. onmouseout	鼠标从某元素移开。
		
		
	5. 键盘事件:
		1. onkeydown	某个键盘按键被按下。	
		2. onkeyup		某个键盘按键被松开。
		3. onkeypress	某个键盘按键被按下并松开。

	6. 选择和改变
		1. onchange	域的内容被改变。
		2. onselect	文本被选中。

	7. 表单事件:
		1. onsubmit	确认按钮被点击。
		2. onreset	重置按钮被点击。

* 如何绑定事件
	1. 直接在html标签上,指定事件的属性(操作),属性值就是js代码

	2. 通过js获取元素对象,指定事件属性,设置一个函数

       <body>
			//第一种方法
			<img id="light" src="img/off.gif"  onclick="fun();">
			//第二种方法
			<img id="light2" src="img/off.gif">
			
		 <script>
			//第一种方法
			    function fun(){
			        alert('我被点了');
			        alert('我又被点了');
			    }

			//第二种方法
			    function fun2(){
			        alert('咋老点我?');
			    }
			
			    //step1:获取light2对象
			    var light2 = document.getElementById("light2");
			    //step2:绑定事件
			    light2.onclick = fun2;
			
			
			</script>
	  </body>
事件绑定实例1——灯泡开关
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>电灯开关</title>

</head>
<body>

<img id="light" src="img/off.gif">

<script>
   
    //1.获取图片对象
    var light = document.getElementById("light");

    var flag = false;//代表灯是灭的。 off图片

    //2.绑定单击事件
    light.onclick = function(){
        if(flag){
            light.src = "img/off.gif";
            flag = false;

        }else{
            light.src = "img/on.gif";
            flag = true;
        }


    }
    
    

</script>
</body>
</html>
事件绑定实例2——轮播图
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轮播图</title>



</head>
<body>

    <img id="img" src="img/banner_1.jpg" width="100%">

    <script>
      
        //修改图片src属性
        var number = 1;
        function fun(){
            number ++ ;
            if(number > 3){
                number = 1;
            }
            var img = document.getElementById("img");
            img.src = "img/banner_"+number+".jpg";
        }

        //定义一个定时器,每隔3秒调用方法一次。
        setInterval(fun,3000);

    </script>
</body>
</html>
Node —— 动态表格

注意:javascript:void(0)
(1)是一个死链接,点了之后一动不动

与#的区别:
#包含了一个位置信息,默认的锚是#top 也就是网页的上端。

而javascript:void(0), 仅仅表示一个死链接。

在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id。

如果你要定义一个死链接请使用 javascript:void(0) 。

(2)执行void操作符当中的代码
(3)计算void操作符当中的算术

给表格实现了 添加 | 删除一行信息 功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>动态表格</title>

    <style>
        table{
            border: 1px solid;
            margin: auto;
            width: 500px;
        }

        td,th{
            text-align: center;
            border: 1px solid;
        }
        div{
            text-align: center;
            margin: 50px;
        }
    </style>

</head>
<body>

<div>
    <input type="text" id="id" placeholder="请输入编号">
    <input type="text" id="name"  placeholder="请输入姓名">
    <input type="text" id="gender"  placeholder="请输入性别">
    <input type="button" value="添加" id="btn_add">

</div>


<table>
    <caption>学生信息表</caption>
    <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>操作</th>
    </tr>

    <tr>
        <td>1</td>
        <td>小李</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
    </tr>

    <tr>
        <td>2</td>
        <td>小明</td>
        <td></td>
        <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
    </tr>

    <tr>
        <td>3</td>
        <td>小花</td>
        <td>?</td>
        <td><a href="javascript:void(0);" onclick="delTr(this);" >删除</a></td>
    </tr>


</table>


<script>
    
   //使用innerHTML添加
    document.getElementById("btn_add").onclick = function() {
        //2.获取文本框的内容
        var id = document.getElementById("id").value;
        var name = document.getElementById("name").value;
        var gender = document.getElementById("gender").value;

        //获取body里面的第一个 table
        var table = document.getElementsByTagName("table")[0];

        //添加一行
        table.innerHTML += "<tr>\n" +
            "        <td>"+id+"</td>\n" +
            "        <td>"+name+"</td>\n" +
            "        <td>"+gender+"</td>\n" +
            "        <td><a href=\"javascript:void(0);\" οnclick=\"delTr(this);\" >删除</a></td>\n" +
            "    </tr>";
    }


    //删除方法
    function delTr(obj){
        var table = obj.parentNode.parentNode.parentNode;
        var tr = obj.parentNode.parentNode;

        table.removeChild(tr);
    }


</script>

</body>
</html>
鼠标事件 —— 全选表格

全选 全不选 反选

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格全选</title>
    <style>
        table{
            border: 1px solid;
            width: 500px;
            margin-left: 30%;
        }

        td,th{
            text-align: center;
            border: 1px solid;
        }
        div{
            margin-top: 10px;
            margin-left: 30%;
        }

        .out{
            background-color: white;
        }
        .over{
            background-color: orange;
        }
    </style>

  <script>

      //1.在页面加载完后绑定事件
      window.onload = function(){
          //2.给全选按钮绑定单击事件
          document.getElementById("selectAll").onclick = function(){
                //1.获取所有的checkbox
                var cbs = document.getElementsByName("cb");
                //2.遍历
                  for (var i = 0; i < cbs.length; i++) {
                      //3.设置每一个cb的状态为选中  checked
                      cbs[i].checked = true;
                  }
          }

          document.getElementById("unSelectAll").onclick = function(){
              //1.获取所有的checkbox
              var cbs = document.getElementsByName("cb");
              //2.遍历
              for (var i = 0; i < cbs.length; i++) {
                  //3.设置每一个cb的状态为未选中  checked
                  cbs[i].checked = false;
              }
          }

          document.getElementById("selectRev").onclick = function(){
              //反选
              //1.获取所有的checkbox
              var cbs = document.getElementsByName("cb");
              //2.遍历
              for (var i = 0; i < cbs.length; i++) {
                  //3.设置每一个cb的状态为相反
                  cbs[i].checked = !cbs[i].checked;
              }
          }

          document.getElementById("firstCb").onclick = function(){
              //第一个cb点击
              //1.获取所有的checkbox
              var cbs = document.getElementsByName("cb");
              //获取第一个cb

              //2.遍历
              for (var i = 0; i < cbs.length; i++) {
                  //3.设置每一个cb的状态和第一个cb的状态一样
                  cbs[i].checked =  this.checked;
              }
          }

          //给所有tr绑定鼠标移到元素之上和移出元素事件
          var trs = document.getElementsByTagName("tr");
          //2.遍历
          for (var i = 0; i < trs.length; i++) {
              //移到元素之上
              trs[i].onmouseover = function(){
                    this.className = "over";
              }

              //移出元素
              trs[i].onmouseout = function(){
                     this.className = "out";
              }

          }

      }



  </script>

</head>
<body>

<table>
    <caption>学生信息表</caption>
    <tr>
        <th><input type="checkbox" name="cb" id="firstCb"></th>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>操作</th>
    </tr>

    <tr>
        <td><input type="checkbox"  name="cb" ></td>
        <td>1</td>
        <td>小李</td>
        <td></td>
        <td><a href="javascript:void(0);">删除</a></td>
    </tr>

    <tr>
        <td><input type="checkbox"  name="cb" ></td>
        <td>2</td>
        <td>小明</td>
        <td></td>
        <td><a href="javascript:void(0);">删除</a></td>
    </tr>

    <tr>
        <td><input type="checkbox"  name="cb" ></td>
        <td>3</td>
        <td>小花</td>
        <td>?</td>
        <td><a href="javascript:void(0);">删除</a></td>
    </tr>

</table>
<div>
    <input type="button" id="selectAll" value="全选">
    <input type="button" id="unSelectAll" value="全不选">
    <input type="button" id="selectRev" value="反选">
</div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值