Javascript回顾(三)

Javascript回顾(三)

1、DOM树

Document 文档------html文档

Object 对象------html文档元素

Model 模型------元素自身与元素之间的关系

image-20201218171525494

Javascript的一个重要作用是操作DOM树中的元素也叫节点,DOM树是浏览器渲染html文档的重要依据,用来查找操作页面的工具。

  • onload 与 onclick事件

    事件主体:谁能干这事?

    事件触发条件:什么时候发生?

    事件过程:可预定义也可自定义(通常由函数实现)

    总结:事件是对象上的方法,以函数为载体

    onload事件的对象是window

    onclick事件的对象是document

    • 语法:

    window.onload = function () { }

    document.onclick = function () {}

    <!DOCTYPE HTML>
    <html>
    <head>
    	<meta charset='utf-8'>
    	<title>事件测试</title>
    	<script>
    		window.onload = function () {
           
           
    			window.alert('我是window对象,现在页面加载完成啦!');
    			document.onclick = function () {
           
           
    				window.alert('我是document对象,我被点击啦!');
    			}
    		}
    	</script>
    </head>
    <body>
    
    </body>
    </html>
    

    加载页面时:

    image-20201218174152169

    点击页面时:

    image-20201218174223158

2、选择页面元素的四种常用方法

<!DOCTYPE HTML>
<html>
<head>
	<meta charset='utf-8'>
	<title>获取元素方法测试</title>
	<style>
		.list{
     
     
			color:read;
			font-family:Georgia;
			font-size:24px;	
		}
	
	</style>
</head>
<body>
	<h2 id = 'header'>前端学习</h2>
	<ul class='list'>
	<li>html</li>
	<li>css</li>
	<li>javascript</li>
    </ul>
</body>
</html>
  • 通过标签来获取元素

    document.getElementsByTagName()

    image-20201218180627163

  • 通过ID来获取元素

    document.getElementById()

    image-20201218182951223

  • 通过类名(class)来获取

    document.getElementByClassName()

    image-20201218184414249

  • 通过css选择符的方式获取

    document.querySelector()

    返回所有符合条件的第一个

    image-20201218185254114

    document.querySelectorAll()

    返回所有的符合条件的

    image-20201218185712359

3、节点常用属性

  • nodeType: 节点类型

    • 1:元素节点

      nodeType 返回节点类型(由数字表示)

      nodeName 返回节点名称

      nodeValue 返回节点的值

      image-20201219152040560

    • 2:属性节点

      attributes 返回该节点下的属性节点

      image-20201219152321981

    • 3:文本节点

      childNodes 返回该节点下的所有子节点

      image-20201219152512929

4、DOM树节点之间的关系

parentNode 返回该节点的父节点

childNodes 返回该节点的子节点(数组)

childNodes.length 返回该节点的字节点的个数

previousSibling 返回该节点的前一个兄弟节点

nextSibling 返回该节点的下一个兄弟节点

firstChild 返回该节点的第一个子节点

lastChild 返回该节点的最后一个子节点

hasChildNodes 判断该节点是否有子节点(Boolean)

image-20201219161714156

5、子节点类型判断与操作

  • 第一种
window.onload = function () {
    
    
 var li = document.getElementsByTagName('li')  //通过标签名获取元素(元组)
 for(var i=0; i<li.length; i++){
    
      
	li[i].style.color = 'red';   //将每个li标签设置css属性 style="color:red"
		}
	
	}

image-20201219232342143

  • 第二种(推荐)

    var ul = document.getElementsByTagName('ul')[0];  //获取元素
    	var li = ul.childNodes;  //获取li的子节点(数组)
    	for (var i=0; i<li.length; i++){
          
            
    	 if (li[i].nodeType == 1){
          
            //判断li节点属性是否为1:元素节点
    	  li[i].style.color = 'green';  //设置每个li节点的css属性为 style="color:green"
    	 }
    	 }
    

    image-20201219233806141

注意:以上两种JS操作都涉及到更改页面元素,所以JS代码要写在body标签内容的最后面。

6、元素节点的增删改查

  • createElement(标签名) 创建元素节点
  • createTextNode(文本内容) 创建文本节点内容

文本节点必须插入到元素节点

  • appendChild(节点) 插入节点到父元素末尾

创建li元素节点和一个文本节点,并将文本节点插入到li元素节点中,设置li元素的css属性。

image-20201219235037873

将li节点插入到其父级节点ul中:

image-20201219235237592

显示效果:

image-20201219235342660

  • insertBefor(节点, 位置) 插入节点到指定位置

    image-20201220135127781

    image-20201220135145028

  • removeChild() 删除指定节点

image-20201220180236621

image-20201220180326377

7、JavaScript事件

文档或浏览器窗口发生的特定的交互瞬间,是用户或浏览器执行的某种动作,是javascript和DOM交互的桥梁。

事件不能单独存在,需要绑定到特定的元素对象上才能被感知。

  • 事件类型

    窗口事件: onload

    鼠标事件: onclick

    键盘事件: onkeydown

    焦点事件: onfocus

  • 事件绑定方式

    image-20201220182743391

    • 标签属性(不推荐)

      <h2 id = 'header' οnclick="window.alert('我被点击啦!')">前端学习</h2>
      

      当点击“前端学习”时弹窗

      image-20201220183931395

    • 对象属性

      将事件作为对象的属性

      <script>
      		window.onload = function() {
               
               
      		  var h2 = document.getElementsByTagName('h2')[0];
      		  h2.onclick = function () {
               
               
      		    console.log('我是h2,我又被点击啦啦啦啦');
      		  }
      		}
      </script>
      

      点击“前端学习”时,将在console中输出“我是h2,我又被点击啦啦啦啦”

      image-20201220184747893

    • 对象方法

      将事件作为对象的方法

      addEventListener() 添加事件

      removeEventListener() 删除事件

      <script>
      		window.onload = function() {
               
               
      		  var h2 = document.getElementsByTagName('h2')[0];
      		  var showMess = function() {
               
               
      		    window.alert('我是对象事件的监听方法')
      		  }
      		  h2.addEventListener('click', showMess, false); //添加事件
                 //h2.removeEventListener('click', showMess, false) //删除事件,加上这句后该事件将不会执行
      		}
      </script>
      

      点击“前端学习”时弹窗:

      image-20201220185616431

  • 事件冒泡与捕捉

image-20201220182908316

捕捉与冒泡相反

终止冒泡的方式:

1、event.cancelBubble = true;

2、event.stopPropagation( );

script>
```

点击“前端学习”时弹窗:

[外链图片转存中...(img-gQqYFYIJ-1608474016315)]
  • 事件冒泡与捕捉
image-20201220182908316

捕捉与冒泡相反

终止冒泡的方式:

1、event.cancelBubble = true;

2、event.stopPropagation( );

image-20201220221301573

猜你喜欢

转载自blog.csdn.net/qq_43665434/article/details/111464042