zoukankan      html  css  js  c++  java
  • javascript实例解释分析常用选择器

    一、js选择器

    1、概念:将js与html建立起关系

    2、查找标签的三种方式

    <div id="id" class="ftn1"> </div>
    <div id="id" class="ftn1"> </div>
    //第一种  
    console.log(d);//可以同时找到两个id为id的标签
    //第二种,所有出现在页面的内容都属于文档对象,文档(document)高于页面
    //在文档(document)中出现的内容都是文档(document)节点
    //节点:标签节点(元素)、文本节点、注释节点、<doctype>节点
    getElement(最严谨)
    //第三种方式
    querySelector(最方便)
    

    3、document.getElementById(id) (只能获取一个满足条件的标签)

    <div id="id" class="ftn1"> 我是div111</div>
    <div id="id" class="ftn1"> 我是div222</div>
    var div=document.getElementById('id');#只能检索到页面的第一个满足要求的标签
    console.log(div)
    ===><div id="id" class="ftn1"> 我是div111</div>
    

    4、document.getElementsByClassName(类)(可以获得页面所有满足条件的标签)

    <body id="wd">
    				<div id="hd" class="item"></div>
    				<div id="hd" class="item"></div>
    </body>
    <script>
    			var body=document.getElementById('wd')
          //getElementById只能由documen调用,因为我们要保证文档中一个ID只能出现一次,而document就是减速文档全部,而body只能检索自身标签内部区域
    			var hdiv=body.getElementsByClassName('item')
          console.log(hdiv)
    </script>
    ===>		<div id="hd" class="item"></div>
    				<div id="hd" class="item"></div>
    

    5、document.getElementsByName(获得标签中含有name属性的标签)

    <input name="123"></input>
    var hname=document.getElementByName('123')
    console.log(hname)
    ===><input name="123"></input>
    

    6、document.getElementsByTagName(按标签样式选择)

    <body id="wd">
    				<div id="hd" class="item"></div>
    				<div id="hd" class="item"></div>
    </body>
    var itag=document.getElementsByTagName('div)
    console.log(itag)
    ==><div id="hd" class="item"></div>
    		<div id="hd" class="item"></div>  //找到所有的div标签
    

    7、document.querySelector (支持css的语法查找标签)

    <body id="wd">
    				<div id="hd" class="item"></div>
    				<div id="hd" class="item"></div>
    </body>
    var qs=document.querySelector(body>.item)
    //只能检索第一个满足条件的
    ==><div id="hd" class="item"></div>
    

    8.document.querySelectorAll

    <body id="wd">
    				<div id="hd" class="item"></div>
    				<div id="hd" class="item"></div>
    </body>
    var qs=document.querySelectorAll(body>.item)
    //检测到所有符合条件的
    ==》<div id="hd" class="item"></div>
    		<div id="hd" class="item"></div>
    
    
    <body id="wd">
    				<div id="hd" class="item"></div>
    				<div id="hd" class="item"></div>
    </body>
    var qs=document.querySelectorAll(.hd)
    //检测到所有符合条件的,包括id,所以不严谨
    ==》<div id="hd" class="item"></div>
    		<div id="hd" class="item"></div> 
    

    二、js事件

    1、概念:页面标签在满足某种条件下完成指定(完成回调函数)的功能

    ​ 点击事件:鼠标点击标签

    ​ 双击事件:鼠标双击标签

    ​ 悬浮事件:鼠标悬浮到标签

    ​ 键盘按下事件:键盘按下|抬起

    重点:WIN | documet | html |body

    2、点击事件

    <body id="wd">
    				<div id="hd" class="item"></div>
    				<div id="hd" class="item"></div>
    </body>
    var qs=document.querySelectorAll(.hd)
    qs.onclick=function (){
    				alter("123")
    }
    
    <div class="outer">
        <div class="div1" id="h1"></div>
        <div class="div1" id="h2"></div>
    </div>
    var di=document.querySelectorAll('.div1');
        di[0].onclick=function () {
            di[0].style.backgroundColor="yellow";
        }
        var di=document.querySelectorAll('.div1');
        di[1].onclick=function () {
            di[0].style.backgroundColor="blue";
        }
    
    
    <div class="outer">
        <div class="div1" id="h1"></div>
        <div class="div1" id="h2"></div>
    </div>
    var di=document.querySelector('.div1');
        di.onclick=function () {
            this.style.backgroundColor="yellow";
        }
        var di=document.querySelectorAll('.div1');
        di[1].onclick=function () {
            di[0].style.backgroundColor="blue";
        }
    

    三、js处理页面文档(js只获取标签的行间式)

    1、删除

    <div class="outer">
        <div class="div1" id="h1">001</div>
        <div class="div1" id="h2">002</div>
        <div class="div1" id="h3">003</div>
    </div>
    var hh1=document.querySelector('#h1');
        var hh2=document.querySelector('#h2');
        var hh3=document.querySelector('#h3');
        var text=hh1.innerText;
    		//删除文本
    		hh1.innerText="";
    

    2、操作子标签

    var hh1=document.querySelector('#h1');
        var hh2=document.querySelector('#h2');
        var hh3=document.querySelector('#h3');
        var text=hh1.innerText;
    		//修改文本
    		hh1.innerText="这时修改的文本";
    
    var hh1=document.querySelector('#h1');
        var hh2=document.querySelector('#h2');
        var hh3=document.querySelector('#h3');
        var text=hh1.innerHTML;
    		//修改文本(可以添加整个标签及样式)
    hh1.innerHTML="<b>这是加粗的版本</b>";//只寻找内部的标签
    var outer=hh1.outerHTML
    console.log(outer)//会将自身的标签也携带进去
    

    3、操作页面样式

    <div class="outer">
        <div class="div1" id="h1">001</div>
        <div class="div1" id="h2">002</div>
        <div class="div1" id="h3" style="backgrund:pink">003</div>
    </div>
    var hh1=document.querySelector('#h1');
    var hh2=document.querySelector('#h2');
    var hh3=document.querySelector('#h3');
    var bgColor=hh3.style.backgroundColor;//js只能获取标签的行间式样式,也就是计算前的样式
    console.log(bgColor)
    ===>pink
    //修改style
    hh3.style.backgroundColor='yellow';
    
    
    注意:内联和外联的样式:计算后的样式
    //获取计算后的样式
    //window.getComputedStyle(标签,伪类(没有null)).backgroundColor;可以获得计算后的样式,也可以获得行间式,但他只能读,不能修改行间式样式
    var bgColor=window.getComputedStyle(hh3,null).backgroundColor;
    console.log(bgColor)
    ==>'yellow'
    //第二种方式
    var bgColor=getComputedStyle(hh3,null).getPropertyValue('background-color');
    console.log(bgColor)
    
    //点击div标签的切换颜色
    //css
    <style>
      .div{
        100px;
        height:100px;
        background:red;
      }
      </style>
    //html
    <div class="div1" style="background:red"></div>
    //javascript
    //获得标签
    var hh=document.querySelector('.div1')
        console.log(hh)
    //设置获得标签的点击事件
    hh.onclick=function (){
      //查看标签的原有颜色
      var bgColor=getComputedStyle(hh,null).backgroundColor;
      console.log(bgColor)
      //判断标签的颜色是否为rgb(255, 0, 0)
      if (bgColor=='rgb(255, 0, 0)'){
          this.style.backgroundColor="blue";
          }
      else {
        this.style.backgroundColor="red";
      }
    }
    

    四、js事件控制标题栏

    1、循环绑定(变量污染问题)

     .part1{
            /* 100px;*/
            
        }
        .part1:after{
            content: "";
            display: block;
            clear: both;
        }
        .part1 div{
            color: red;
             100px;
            height: 100px;
            text-align: center;
            line-height: 100px;
            float: left;
        }
        .div1{
            background: yellow;
        }
        .div2{
            background: paleturquoise;
        }
        .div3{
            background: darkblue;
        }
        .div4{
            background:aqua;
        }
    </style>
    <body>
    
    <div class="part1">
        <div class="div1">1</div>
        <div class="div2">2</div>
        <div class="div3">3</div>
        <div class="div4">4</div>
    </div>
    <script>
        var divs=document.querySelectorAll('.part1 div');
    
        console.log(divs)
    
        for (var i=0;i<divs.length;i++){
           divs[i].onmouseenter=function () {
            console.log(i)//此时打印的i会一直是4
        }
        }
    

    2、解决变量污染难问题(将变量转化成块级作用域)

    <script>
        var divs=document.querySelectorAll('.part1 div');
    
        console.log(divs)
    
        for (let i=0;i<divs.length;i++){
           divs[i].onmouseenter=function () {
            console.log(i)//此时打印的i会一直是4
        }
        }
    //将变量i定义为块作用域
    

    3、标题栏悬浮显示

    <style>
        .part1:after{
            content: "";
            display: block;
            clear: both;
        }
        .part1 div{
            color: white;
             100px;
            height: 100px;
            text-align: center;
            line-height: 100px;
            float: left;
        }
        .div1{
            background: yellow;
        }
        .div2{
            background: paleturquoise;
        }
        .div3{
            background: darkblue;
        }
        .div4{
            background:aqua;
        }
    </style>
    <body>
    
    <div class="part1">
        <div class="div1">1</div>
        <div class="div2">2</div>
        <div class="div3">3</div>
        <div class="div4">4</div>
    </div>
    <script>
        var divs=document.querySelectorAll('.part1 div');
    
        console.log(divs);
    //对div1 | div2 | div3 | div4循环进行时间绑定
        for (let i=0;i<divs.length;i++){
          //onmuseenter鼠标悬浮事件
           divs[i].onmouseenter=function () {
             //调用背景颜色改变函数
            changeColor(i);
        }
        }
        function changeColor(index){
          //通过mouseenter捕捉的事件与循环的i对应,从而改变训中标签的状态
            for (let i=0;i<divs.length;i++){
              //先将所有标签的背景先设置一下
           divs[i].style.backgroundColor='red';
                if (i==index){
                  //匹配修改选中的标签
               divs[i].style.backgroundColor='black'
                }
        }
        }
    

    4、悬浮标题修改下面标签的内容

    <style>
        .part1:after{
            content: "";
            display: block;
            clear: both;
        }
        .part1 div{
            color: white;
             100px;
            height: 100px;
            text-align: center;
            line-height: 100px;
            float: left;
            background: darkorchid;
        }
        h1{
            height: 100px;
            display: block;
            background: saddlebrown;
            color: white;
        }
    
    </style>
    <body>
    
    
    <div class="part1">
        <div class="div1">1</div>
        <div class="div2">2</div>
        <div class="div3">3</div>
        <div class="div4">4</div>
    </div>
    <h1></h1>
    <script>
        var data=["标题一","标题二","标题三","标题四"]
        var divs=document.querySelectorAll('.part1 div');
    
        console.log(divs);
    
        for (let i=0;i<divs.length;i++){
           divs[i].onmouseenter=function () {
            changeColor(i);
            changeContent(i);
        }
        }
        function changeColor(index){
            for (let i=0;i<divs.length;i++){
           divs[i].style.backgroundColor='red';
                if (i==index){
               divs[i].style.backgroundColor='black'
    
                }
        }
        }
        var h1=document.querySelector('h1');
        function changeContent(index) {
            h1.innerText=data[index]
        }
    </script>
    

    五、js控制类名

    //实例,实现标签类名修改
    <style>
        .y{
             100px;
            height: 100px;
            background: red;
            border-radius: 50%;
        }
        .f{
             100px;
            height: 100px;
            background: pink;
        }
        .g{
            display:none;
        }
    </style>
    <ul>
        <li class="l1">y</li>
        <li class="l2">f</li>
        <li class="l3">g</li>
    </ul>
    <div class="box"></div>
    <script>
        var box=document.querySelector('.box');
        var l1=document.querySelector('.l1');
        var l2=document.querySelector('.l2');
        var l3=document.querySelector('.l3');
        l1.onclick=function () {
            box.className='y'
        }
        l2.onclick=function () {
            box.className='f'
        }
        l3.onclick=function () {
            box.className='g'
        }
    </script>
    
  • 相关阅读:
    前端战五渣学前端——跨域
    CSS3学习笔记
    Vue工程化入口文件main.js中Vue.config.productionTip = false含义
    CSS选择器有哪几种?举例轻松理解CSS选择器
    研究生综合英语 作文 作业
    tomcat部署项目的方法
    【Winfrom-无边框窗体】Winform如何拖动无边框窗体?
    C#调用默认浏览器打开网页的几种方法
    CefSharp在高DPI的屏幕上出现黑边(winform)
    c# 关于mongo bson转json的问题
  • 原文地址:https://www.cnblogs.com/chuwanliu/p/11025229.html
Copyright © 2011-2022 走看看