javascript正则表达式对象、窗体对象11.0

12、正则表达式对象

定义:正则表达式是规则,是让计算机能够读懂的人类制定的规则

var reg = /规则/;或者 var reg = new RegExp("规则");

正则:

g==>global全局

i==>ignore 忽略大小写

^==>标识  开始位置

$==>标识  结尾

量词:

*:任意次数, 
+:至少一次, 
?:0次或一次 , 
{n}:n次,n是一个正整数 
{n,m}:至少n次,至多m次,n<m,n和m都是正整数 
{n,}:至少n次,n是一个正整数

例:var str = "2a3,3A45,3A43,fad,3a4,342";

(1)、分隔

//以3为分界线
var arr = str.split("3");
//输出每一个被3分隔的字符串
for(var i=0; i<arr.length; i++) {
    document.write(arr[i]);
    document.write("<br>");
}

 

(2)、替换

//这里将,号替换成|  这里只替换匹配到的第一个
var s = str.replace(",", "|");
//返回新的字符串 12a3|3A45,3A43,fad,3a4,342
document.write(s);
document.write("<br>");        
//这里将所有找到的a  不区分大小写 都换成|
var reg=new RegExp("a","gi")        
var s1=str.replace(reg,"|");        
//var s1=str.replace(/a/gi,"|");     //这个实现的功能相同
//12|3,3|45,3|43,f|d,3|4,342
document.write(s1)                
document.write("<br>");     

(3)、抓取对应的字符串

var str1="w34r384hugw949843hg37rdfhasi723hhiay29";  
//这里匹配 小写子母 和大写子母
var numarr=str1.match(/[a-zA-Z]+/g);     
//w,r,hugw,hg,rdfhasi,hhiay           
document.write(numarr);                             

(4)、验证表达式对象,数据

var temp = "2372H";
//这里匹配的是纯数字
var r = /^\d+$/;
//bol返回的是布尔值  因为字符串中带有H 所以不是纯数字  因此返回false
var bol = r.test(temp);
alert(bol);

 练习12-1:javascipt验证邮箱

HTML代码

js验证邮箱:  <input type="text" id="input1"  /> 
<input type="button" id="btn1" value="验证"/> 

JavaScipt代码

//var btn=document.getElementById("btn1");                              
var btn =document.getElementById("input1");                             
btn.onblur=function(){                                                  
    var obj=document.getElementById("input1");
//拿到输入框的值
    var str=this.value;
//创建正则表达式对象                                                 
    var reg=new RegExp();                                               
//对对象赋值
    var reg = /^[a-zA-Z0-9]{6,11}@(sina\.cn|126\.com|163\.com|qq\.com)$/;
//测试输入的字符串str是否符合正则表达式                                                              
    if(reg.test(str)){                                                  
        alert("通过");                                                    
    }                                                                   
    else{                                                               
        this.style.border="1px solid red";                              
        alert("输入有误");                                                  
    }                                                                   
                                                                        
};                                                                      
var dd=document.getElementById("input1"); 
//鼠标焦点事件  当鼠标焦点在框中就                              
dd.onfocus=function(){                                                  
    this.style.border="none";                                           
}                                                                       

13、窗体对象

提示框confirm

//confirm("提示内容"); 返回Boolean,若点击“确定”,返回true,否则返回flase
var f = window.confirm("今天下雨没?");
if(f) {
    alert("点击了确定");
}else {
    alert("点击了取消");
}

 

 定时器

每隔一段时间执行的方法

语法: window.setInterval("执行的代码"/"函数名称","时间间隔【毫秒为单位】")

延迟执行

语法:window.setTimeout("可执行的代码"|"函数名","时间【毫秒】");

注意:定时器多次执行,延迟执行只执行一次。

练习13-1:按钮实现时间的暂停和开始

HMTL代码

<input type="button" id="btn1"  value="按钮"/>
<div id="div1"></div>                 
<input type="button"  id="btn2" value="暂停"/>
<input type="button"  id="btn3" value="开始"/> 

JavaScript代码

//定义定时器对象
var inId = window.setInterval(timer, 1000);

//定时器函数、
function time() {
//定义日期对象    
    var date = new Date();
//拿到div块元素
    var dd = document.getElementById("div1");
//输出日期字符串
    dd.innerHTML = date.toString();
}
//暂停按钮事件
var bt2 = document.getElementById("btn2");
bt2.onclick = function() {
//清除定时器 里面要放入定时器对象 window调用定时器
    window.clearInterval(inId);
};
//开始按钮绑定事件
var bt3=document.getElementById("btn3"); 
bt3.onclick = function() {
    inId = window.setInterval(timer, 1000);
};

 

练习13-2:时间倒数,自动跳转

HTML代码

<div id="div2">5秒以后,跳转至百度首页</div>

JavaScript代码

var timeobj=setInterval(fn2,1000); 
function fn2() {
    var d2 = document.getElementById("div2");
//取出div2中的内容
    var h = d2.innerHTML;
//取到内容中的数字
    var n = parseInt(h);
//对数字进行减一操作
    n--;
//div块中内容进行输出,这里是字符串进行拼接 substring 是从1开始向后所有进行截取
    d2.innerHTML = n + h.substring(1);
//当n=0时,结束定时器
    if(n==0) {
        clearInterval(timeobj);
 //跳转到百度页面
       window.location.href="http://www.baidu.com";
    }
}

 练习13-3:颜色方块从左到右自动移动

HTML代码

<ul>                                                   
    <li class="red"></li>                              
    <li></li>                                          
    <li></li>                                          
    <li></li>                                          
    <li></li>                                          
    <li></li>                                          
    <li></li>                                          
    <li></li>                                          
    <li></li>                                          
    <li></li>                                          
    <li></li>                                          
</ul>                                                  
<div style="clear: both;">                             
    <input type="button" value="暂停" id="btn1" />       
    <input type="button" value="继续" id="btn2" />       
</div>                                                 

CSS代码

ul{                                    
    list-style: none;                  
    padding: 0;                        
    margin: 0;                         
}                                      
ul>li{                                 
    float: left;                       
    width: 50px;                       
    height: 50px;                      
    border: 5px solid black;           
    background-color: dodgerblue;      
    margin: 50px 20px;                 
}                                      
.red{                                  
    background-color: red;             
}                                      

JavaScript代码

var objid=setInterval(fn,500);                       
function fn(){                                       
    var lis=document.getElementsByTagName("li"); 
//设置方块的索引   
    var index = 0;
    for(var i=0; i<lis.length; i++) {
//如果当前块的类名是red
        if(lis[i].className = "red") {
            index = i;
//将类名值设置为空
            lis[i].className = "";
        }
    }
//跳转到下一个块
    index++;
//当index加到最大长度  返回最初位置
    if(index==lis.length) {
        index=0;
    }
    lis[index].className = "red";
}
//暂停定时器
var bt1 = document.getElementById("btn1");  
bt1.onclick=function(){                     
    clearInterval(objid);                   
};                                          
 //从新开始定时器                                          
var bt2 = document.getElementById("btn2");  
bt2.onclick=function(){                     
    objid=setInterval(fn,500);              
};                                          

 

 练习13-4:图片轮播,有开始、暂停、上一张、下一张、继续按钮

HTML代码

<div id="div1">                                                                            
    <img src="img/Chrysanthemum.jpg" height="500" width="500">                             
    <ul>  
//给每个块添加图片 <li><img src="img/Chrysanthemum.jpg" height="80" width="80" class="bored" /></li> <li><img src="img/Desert.jpg" height="80" width="80" /></li> <li><img src="img/Hydrangeas.jpg" height="80" width="80" /></li> <li><img src="img/Jellyfish.jpg" height="80" width="80" /></li> <li><img src="img/Koala.jpg" height="80" width="80" /></li> <li><img src="img/Lighthouse.jpg" height="80" width="80" /></li> <li><img src="img/Penguins.jpg" height="80" width="80" /></li> <li><img src="img/Tulips.jpg" height="80" width="80" /></li> </ul> <div style="clear: both;"> <input type="button" id="btn1" value="开始" /> <input type="button" id="btn2" value="暂停" /> <input type="button" id="btn3" value="继续" /> <input type="button" id="btn4" value="下一张" /> <input type="button" id="btn5" value="上一张" /> </div> </div>

CSS代码

* {                                      
    padding: 0;                          
    margin: 0;                           
}                                        
                                         
#div1 {                                  
    width: 800px;                        
    height: 700px;                       
    text-align: center;                  
    margin: 0 auto;                      
}                                        
                                         
ul>li {                                  
    list-style: none;                    
    float: left;                         
    margin-left: 10px;                   
}       
li>img {                     
    border: 3px solid black; 
}                            
                             
.bored {                     
    border: 3px solid red;   
}                                                             

JavaScript代码

var objid = null;
var index = 0;
//得到所有img标签
var imgs = document.querySelectorAll("li>img");
var bt1 = document.getElementById("btn1");
bt1.onclick = function() {
//判断定时对象是否清空
    if(objid == null) {
        objid = setInterval(fn, 2000);
    }
};
function fn() {
    for (var i=0; i<imgs.length; i++) {
        if(imgs[i].className == "bored") {
            index = i;
            imgs[i].className = "";
            break;
        }
    }
    index++;
    if(index>=imgs.length){ 
    index=0;            
    }  
//下面框框跟着改变
    imgs[index].className="bored";    
//获取显示区域的对象           
    var simg=document.querySelector("#div1>img");
//将li块中的路径赋值给显示区域中
    simg.src=imgs[index].src; 
} 

//按钮二暂停事件       
var bt2=document.getElementById("btn2");
bt2.onclick=function(){                 
    clearInterval(objid);    
//清空定时对象            
    objid=null;                          
};                                                

//继续按钮事件
var bt3=document.getElementById("btn3"); 
bt3.onclick=function(){                  
    if(objid==null){ 
//重新启动定时器                     
        objid=setInterval(fn,2000);       
    }                                     
};   

//下一张点击事件
var bt4=document.getElementById("btn4");                  
bt4.onclick=function(){  
//取消定时                                 
    clearInterval(objid);                                  
    objid=null;                                            
        var temp =document.querySelector(".bored");            
        temp.className="";                                     
    index++;                                               
    if(index>=imgs.length){                                
        index=0;                                           
    }                                                      
    imgs[index].className="bored";                         
    var simg=document.querySelector("#div1>img");          
    simg.src=imgs[index].src;                              
};   
//上一张点击事件
 var bt5=document.getElementById("btn5");                
bt5.onclick=function(){                                 
    clearInterval(objid);                                
    objid=null;                                          
    var temp =document.querySelector(".bored");          
   temp.className="";                                   
    index--;                                             
    if(index<0){                                         
        index=imgs.length-1;                             
    }                                                    
    imgs[index].className="bored";                       
    var simg=document.querySelector("#div1>img");        
    simg.src=imgs[index].src;      
};                                                                                                              

 

posted @ 2020-08-16 15:45  上天安排的最大嘛!  阅读(149)  评论(0编辑  收藏  举报