JavaScript第九篇(p88~p102)

正则表达式语法

检查一个字符串中是否以a开头

  • ^ 表示开头
  • $ 表示结尾
var reg = /^a/;//表示开头
var reg = /a$/;//表示结尾
var reg = /^a$/;//只能出现一个a,才返回true

例1.判断手机号

var phoneStr="13465963214";
var phoneReg=/^1[3-9][0-9]{9}$/;
console.log(phoneReg.test(phoneStr));

例2.检查字符串中是否含有 .

  • . 表示任意字符
  • 在正则表达式中使用 \ 作为转义字符
  • \ .表示 .
  • \ \表示 \
  • 注意:使用构造函数时,由于参数是个字符串而\是字符串的转义字符,如果要使用\则使用\ \来代替
var reg = /\./;
reg = new RegExp("\\.");

在这里插入图片描述

例3.创建一个正则表达式检查一个字符串中是否含有单词child

var reg = /\bchild\b/;
console.log(reg.test("hello,child"));//true
console.log(reg.test("hello,children"));//false

例4.去除掉字符串中的前后空格,用""(空符串)来代替空格

var str ="       hello      ";
str = str.replace(/\s/g , "");
//去除前边的空格
str = str.replace(/^\s*/ , "");
//去除结尾的空格
str = str.replace(/\s*$/ , "");

var str ="       he    llo      ";
str = str.replace(/^\s*|\s*$/g , "");//去除开头和结尾的空格,中间的不去

在这里插入图片描述

邮件的正则(p90)

电子邮件
hello @abc.com.cn

  • 任意的字母数字下划线 .任意的字母数字下划线@ 任意字母数字 .任意字母(2-5位).任意字母(2位)

        \w{3,} (\.\w+*) @ [A-z0-9] + (\.\[A-z]{2,5}){1,2}
    
 var emaiReg=/^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
var email="135618828@qq.com";
console.log(emaiReg.test(email));

DOM简介(p91)

什么是 DOM?

DOM 是一项 W3C (World Wide Web Consortium) 标准。

  • DOM 定义了访问文档的标准:

  • “W3C 文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问、更新文档的内容、结构和样式。”
    W3C DOM 标准被分为 3 个不同的部分:

  • Core DOM - 所有文档类型的标准模型
  • XML DOM - XML 文档的标准模型
  • HTML DOM - HTML 文档的标准模型
    在这里插入图片描述

节点

网页中每一个最基本的组成部分

  • 文档节点:整个html文档
  • 元素节点:HTML中的HTML标签
  • 属性节点:元素的属性
  • 文本节点:HTML标签中的文本内容

节点的属性

在这里插入图片描述

获取对象

例:

<body>
    <button id="btn">我是一个按钮</button>
</body>
<script>
    /*
        浏览器已经为我们提供了文档节点对象,这个对象是window属性可以在页面中直接使用,文档节点代表的是整个网页        
    */
//    console.log(document);
//获取到button对象
var bb=document.getElementById("btn");
console.log(bb);

//修改按钮的文字
btn.innerHTML="I am button"
console.log(btn.innerHTML);
</script>

事件的简介(p92)

在这里插入图片描述

<body>
    <!-- 
        可以在事件对应的属性中设置一些js代码,
            这样当事件被触发时,这些代码将会执行
            这种写法叫做结构行为耦合,不方便维护
     -->
    <button id="btn" >我是一个按钮</button>
</body>
<script>
        /*
        事件就是用户和浏览器之间的交互行为
        比如:点击按钮,鼠标移动,关闭窗口.....
        */
       /*
       可以为按钮的对应事件绑定处理函数的形式来响应事件
       */
      //获取按钮对象
      var btn=document.getElementById("btn");
      /*
        可以为按钮的对象事件绑定处理的函数形式来响应事件
      */
     // 绑定一个单击事件
     //像这种为单击事件绑定的函数,我们称为单击相应函数
     btn.ondblclick=function(){
         alert("你还点");
     };
</script>

文档的加载(p93)

  • 浏览器加载页面时,是按照自上向下的顺序
  • 读取一行运行一行如果将script标签写到页面的上班,在代码执行的时候,页面还没有加载DOM对象,会导致无法获取到DOM对象
  • onload事件会在整个页面加载完成时触发
  • 为window绑定一个onload事件
  • 该事件对应的响应函数会在页面加载完成之后执行,这样可以确保我们的代码执行时素有的DOM对象已经加载完毕了
 <script>
 window.onload=function(){
        var btn = document.getElementById("btn");
        btn.onclick = function () {
            alert("hello");
        };
       }
    </script>
    <body>
    <button id="btn">我是一个按钮</button>
</body>

在这里插入图片描述

dom查询(p94)

getElementById(),getElementsByTagName(),getElementsByName()

在这里插入图片描述

 window.onload=function(){
      var btn=document.getElementsByName("gender");
      var btn2=document.getElementsByTagName("li");
       }

图片的切换练习(p95)

<script>
        window.onload=function(){
            /*
                点击按钮切换图片
            */

            //获取两个按钮
            var prev=document.getElementById("prev");
            var next=document.getElementById("next");
            /*
                要切换图片就是要修改img标签的src属性
            */
            //获取img标签
            var img=document.getElementsByTagName("img")[0];

            //创建一个数字来保存图片的路径
            var imgArr=["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg"]
            // 创建一个变量来保存正在显示图片的索引
            var index=0;

            //获取id为info的元素
            var info=document.getElementById("info");
            //设置提示文字
            
            info.innerHTML="一共"+imgArr.length+"张图片,当前第"+(index+1)+"张";


            //分别为两个按钮绑定单击响应函数
            prev.onclick=function(){

                //切换到上一张使索引-1
                index--;          
                //判断index是否小于0
                if(index<0){
                    index=imgArr.length-1;                   
                }
                img.src=imgArr[index];
                info.innerHTML="一共"+imgArr.length+"张图片,当前第"+(index+1)+"张";
            }
            next.onclick=function(){
                
                  //切换到下一张使索引+1.
                  index++;

                  if(index>imgArr.length-1){
                    index=0;
                }

                //切换图片就是要修改img标签的src属性
                img.src=imgArr[index];
                info.innerHTML="一共"+imgArr.length+"张图片,当前第"+(index+1)+"张";
            }
        }
    </script>
  <style>
        *{
            margin:0;
            padding: 0;
        }
        #outer{
            width:350px;
            margin: 50px auto  ;
            padding: 10px;
            background-color: rgb(110, 57, 90);
            /* 设置文本居中 */
            text-align: center;
        }
    </style>
</head>
<body>

    <div id ="outer">
        <p id="info">一共5张图片</p>
        <img src="1.jpg" alt="冰棍">

        <button id="prev"><上一张</button>
        <button id="next">下一张></button>

    </div>
</body>

在这里插入图片描述

DOM查询(p96~p97)

在这里插入图片描述

全选练习(p98~p100)

<script>
        window.onload=function(){

            /*
                全选按钮,点击按钮之后,4个多选框都被选中

            */
//************************1.checkedAllBtn*************

            //为id为checkedAllBtn的按钮绑定一个单击响应函数
            var checkedAllBtn=document.getElementById("checkedAllBtn");
            var checkedAllbox=document.getElementById("checkedAllbox");
            var items=document.getElementsByName("items");

            checkedAllBtn.onclick=function(){
                //获取4个多选框items
                var items=document.getElementsByName("items");
                // 遍历itmes
                for(var i=0;i<items.length;i++){

                  //设置四个多选框变成选中状态
                  //通过多选框的checked属性可以来获取或设置多选框的状态

                  items[i].checked=true;
                }
                checkedAllbox.checked=true;
                //将全选/全不选设置为选中


            }
            //***********2.checkedAllbox******************
            var checkedNoBtn=document.getElementById("checkedNoBtn");
            checkedNoBtn.onclick=function(){
                //获取4个多选框items
                var items=document.getElementsByName("items");

                // 遍历itmes
                for(var i=0;i<items.length;i++){

                  //设置四个多选框变成选中状态
                  //通过多选框的checked属性可以来获取或设置多选框的状态

                  items[i].checked=false;
                }
                checkedAllbox.checked=false;


            }
//**********************3.checkedRevBtn*************************
            var checkedRevBtn=document.getElementById("checkedRevBtn");
            checkedRevBtn.onclick=function(){
                var items=document.getElementsByName("items");
                for(var i=0;i<items.length;i++){
                    if(items[i].checked==true){
                        items[i].checked=false;
                    }
                    else if(items[i].checked==false) {
                        items[i].checked=true;
                    }
                    
                }
                
                //在反选时也要判断4个多选框是否选中
                checkedAllbox.checked=true;

        //判断4个多选框是否全选
        //只要有一个没选中就不是全选
            for(var j=0;j<items.length;j++){
                if(!items[j].checked){
                    //一旦进入判断就不是全选状态
                    //将checkedAllbox设置为false
                    checkedAllbox.checked=false;
                    break;
                }
            }
            }
//******4.sendBtn按钮,将所有选中的多选框弹出************************
            // 为sendBtn绑定单击响应函数
            var sendBtn=document.getElementById("sendBtn");
            sendBtn.onclick=function(){
                var items=document.getElementsByName("items");
                for(var i=0;i<items.length;i++){
                    if(items[i].checked==true){
                        alert(items[i].value);
                    }
            }
        }
//************5.全选/全不选多选框*****************************
        // 为checkedAllbox绑定一个单击响应函数
        /*
            在事件的响应函数中,函数时给谁绑定的this就是谁
        */
        checkedAllbox.onclick=function(){
            //设计多选框的选中状态
            for(var i=0;i<items.length;i++){
                
                items[i].checked=this.checked;
            }
        }

//************************6.items*********************
        /*
            如果四个多选框全都选中,checkedAllbox也选中
            如果四个多选框都没有选中,checkedAllbox不选中
        */

        //为四个多选框分别绑定单击响应函数
        for(var i=0;i<items.length;i++){
            items[i].onclick=function(){    
            
            //将checkedAllbox设置为选中状态
            checkedAllbox.checked=true;

        //判断4个多选框是否全选
        //只要有一个没选中就不是全选
            for(var j=0;j<items.length;j++){
                if(!items[j].checked){
                    //一旦进入判断就不是全选状态
                    //将checkedAllbox设置为false
                    checkedAllbox.checked=false;
                    break;
                }
            }
           

            };
    }
}
    </script>
<body>
    <form method="post" action="">
        你爱好的运动是?<input type="checkbox" id="checkedAllbox">全选/全不选
        <br>
        <input type="checkbox" name="items" value="足球">足球       
        <input type="checkbox" name="items" value="篮球">篮球
        <input type="checkbox" name="items" value="羽毛球">羽毛球
        <input type="checkbox" name="items" value="乒乓球">乒乓球
        <br>
        <input type="button" id="checkedAllBtn" value="全 选">
        <input type="button" id="checkedNoBtn" value="全不选">
        <input type="button" id="checkedRevBtn" value="反 选">
        <input type="button" id="sendBtn" value="提 交">
    </form>
</body>

在这里插入图片描述

DOM剩余查询方法(p101)

1)获取body标签

1.在document中有一个属性body,它保存的是body的引用

var body = document.body;

2.document.documentElement保存的是html的根标签

var html = document.documentElement;
console.log(html);

2)document.all代表页面中所有的元素

var all = document.all;
for (var i = 0; i < all.length;i++){
console.log(all[i]);
}

3)根据元素的class属性值查询一组元节点对象

getElementByClassName()可以根据class属性值获取一组元素节点对象,但是该方法不支持IE8及以下的浏览器

var box1 = document.getElementsByClassName("box1");

4)document.querySelector()

  • 需要一个选择器的字符串作为参数,可以根据一个CSS选择器来查询一个元素节点对象
  • 虽然IE8中没有getElementsByClassName()但是可以使用querySelector()代替
  • 使用该方法总会返回唯一的一个元素,如果满足条件的元素有多个,那么它只会返回第一个
var div = document.querySelector(".box1 div");
var box1 = document.querySelector(".box1");
           console.log(div);
            console.log(box1);
<body>
    <div class="box1">
        <div>我是一个div</div>
    </div>
</body>

在这里插入图片描述

5)document.querySelectorAll()

  • 该方法和querySelector()用法类似,不同的是它会将符合条件的元素封装到一个数组中返回
  • 即使符合条件的元素只有一个,它也会返回数组
var box1 = document.querySelectorAll(".box1");
console.log(box1);

在这里插入图片描述

DOM增删改(p102)

1)document.createElement()

可以用于创建一个元素节点对象,它需要一个标签名作为参数,将会根据该标签名创建元素节点对象,并将创建好的对象作为返回值返回

var li = document.createElement("li");
console.log(li);

在这里插入图片描述

2)document.createTextNode()

  • 可以用来创建一个文本节点对象
  • 需要一个文本内容来作为一个参数,将会根据该内容创建文本节点,并将新的内容返回
var Text = document.createTextNode("广州");
 console.log(Text );

在这里插入图片描述

3)appendChild()

  • 向一个父节点中添加一个新的子节点
  • 用法:父节点.appendChild(子节点);
li.appendChild(Text);
console.log(li);

在这里插入图片描述

4)insertBefore()

  • 可以在指定的子节点前插入新的字节点
  • 语法:父节点.insertBefore(新节点,旧节点);
var city = document.getElementById("city");
city.insertBefore(li,bj);

5)replaceChild()

  • 可以使用指定的子节点替换已有的子节点
  • 语法:父节点.replaceChild(新节点,旧节点);

6)removeChild()

  • 可以删除一个子节点
  • 语法:父节点.removeChild(子节点);
  • 如果不知道父节点,可使用 子节点.parentNode.removeChild(子节点);

7)使用innerHTML也可以完成DOM的增删改的相关操作;一般我们两种形式一起使用

<script>
        window.onload = function() {
				
				//创建一个"广州"节点,添加到#city下
				myClick("btn01",function(){
					//创建广州节点 <li>广州</li>
					//创建li元素节点
					var li = document.createElement("li");
					
					//创建广州文本节点
					
					var gzText = document.createTextNode("广州");
					
					//将gzText设置为li的子节点
					li.appendChild(gzText);
					
					//获取id为city的节点
					var city = document.getElementById("city");
					
					//将广州添加到city下
					city.appendChild(li);
					
					
				});
				
				//将"广州"节点插入到#bj前面
				myClick("btn02",function(){
					//创建一个广州
					var li = document.createElement("li");
					var gzText = document.createTextNode("广州");
					li.appendChild(gzText);
					
					//获取id为bj的节点
					var bj = document.getElementById("bj");
					
					//获取city
					var city = document.getElementById("city");
					
				
					city.insertBefore(li , bj);
					
					
				});
				
				
				//使用"广州"节点替换#bj节点
				myClick("btn03",function(){
					//创建一个广州
					var li = document.createElement("li");
					var gzText = document.createTextNode("广州");
					li.appendChild(gzText);
					
					//获取id为bj的节点
					var bj = document.getElementById("bj");
					
					//获取city
					var city = document.getElementById("city");
					
				
					city.replaceChild(li , bj);
					
					
				});
				
				//删除#bj节点
				myClick("btn04",function(){
					//获取id为bj的节点
					var bj = document.getElementById("bj");
					//获取city
					var city = document.getElementById("city");
					
					bj.parentNode.removeChild(bj);
				});
				
				
				//读取#city内的HTML代码
				myClick("btn05",function(){
					//获取city
					var city = document.getElementById("city");
					
					alert(city.innerHTML);
				});
				
				//设置#bj内的HTML代码
				myClick("btn06" , function(){
					//获取bj
					var bj = document.getElementById("bj");
					bj.innerHTML = "昌平";
				});
				
				myClick("btn07",function(){
					
					//向city中添加广州
					var city = document.getElementById("city");
					//创建一个li
					var li = document.createElement("li");
					//向li中设置文本
					li.innerHTML = "广州";
					//将li添加到city中
					city.appendChild(li);
					
				});
				
				
			};
			
			function myClick(idStr, fun) {
				var btn = document.getElementById(idStr);
				btn.onclick = fun;
			}

    </script>
<body>
		<div id="total">
			<div class="inner">
				<p>
					你喜欢哪个城市?
				</p>

				<ul id="city">
					<li id="bj">北京</li>
					<li>上海</li>
					<li>东京</li>
					<li>首尔</li>
				</ul>
				
			</div>
		</div>
		<div id="btnList">
			<div><button id="btn01">创建一个"广州"节点,添加到#city下</button></div>
			<div><button id="btn02">将"广州"节点插入到#bj前面</button></div>
			<div><button id="btn03">使用"广州"节点替换#bj节点</button></div>
			<div><button id="btn04">删除#bj节点</button></div>
			<div><button id="btn05">读取#city内的HTML代码</button></div>
			<div><button id="btn06">设置#bj内的HTML代码</button></div>
			<div><button id="btn07">创建一个"广州"节点,添加到#city下</button></div>
		</div>
	</body>

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值