前端:JavaScript(二)

JavaScript中的对象分为3种:内置对象,浏览器对象,自定义对象
内置对象
Array(数组)

var a =Array(); //创建一个空数组
a = new Array(10); //创建一个数组单元为10个的数组
a = new Array(10,20,30); //创建一个指定数组单元的数组

a4=[‘a’,’b’,’c’,’d’]; //快捷定义数组

✨数组遍历的三种方式:

1for(var i =a4.length-1; i>=0; i- -){ //数组倒着遍历
	console.log(i,=>,a4[i]);
}
2for(var i in a4){
	console.log(i,=>,a4[i]);
}
3)a4.forEach(function(v)){ //匿名内部类
	console.log(v);
}

✨数组转换成字符串:默认以逗号分隔形式分隔
console.log(a4.toString());
✨把数组所有元素放入一个字符串,通过指定的分隔符进行分隔
console.log(a4.join(“:”));
✨将两个或多个数组合并
var aa = [1,2,3];
document.write(aa.concat(4,5));
✨将数组元素进行从小到大排序
console.log(b.sort().join(“:”));
✨将数组元素从大到小排序
console.log(b.reverse().join(“:”));
✨往将数组最后塞入一个值
aa.push(50);
✨将数组中最后一个值删除
aa.pop();
✨删除并返回数组的第一个元素
aa.shift();
✨向数组的开头添加一个或更多元素
aa.unshift();
✨删除或清空数组
1)aa = [ ]; //推荐
2)aa.length = 3; //使数组仅保留3个数
3)aa.splice(0,arr.length);

基本包装类:基本数据类型不可以调用方法,JavaScript会自动把它变成包装类
为了方便操作基本数据类型,JavaScript还提供了三个特殊的引用类型:String/Number/Boolean
✨字符串会自动变成一个对象去调用方法
var s1 = ‘zhangsan’; //类似于 var s1 = new String(“zhangsan”)
console.log(s1.substring(2,5));
//截取字符串中第2到底五个字符
✨Fixed( ) 把数字转换为字符串,保留小数点后指定位数的结果
var num =20.5678;
console.log(num.toFixed(2)); //保留小数点后2位
✨Boolean 布尔值包装类对象
在这里插入图片描述

JavaScript 内置对象—Date 日期

<script>
//从1970年1月1日零时零分0秒至今的毫秒数
document.write(“时间戳:”+dd.valueOf( ));

//展示时间信息
function formatDate(dd){
if(!dd instanceof Date){
	return;
    }
//获取年月日,时分秒
    var y = dd.getFullYear(),
	m = dd.getMonth()+1,
	d = dd.getDate(),
	hh = dd.getHours(),
	mm = dd.getMinutes(),
	ss = dd.getSeconds();
	
	//判断单位数字前补零操作
	hh = hh<10 ?0+hh : hh;
	mm = mm<10 ?0+mm : mm;
	ss = ss<10 ?0+ss : ss;

	return y+-+m+-+d+” ”+hh+:+mm+:+ss;
}

var dd = new Date( ); 
document.write(formatDate(dd));
</script>

JavaScript内置对象-String字符串
✨获取第n个字符
var s1 = “ZhangSanFeng”;
document.write(s1[5]+”
”);
✨获取从第n个字符开始后面的len个字符
document.write(s1.substr(5,3)+”
”);
✨获取从第n个字符开始到第n个字符结束中间的几个字符
document.write(s1.substring(5,8)+”
”);
✨获取所有字母字符的小写和大写形式
document.write(“小写:”+s1.toLowerCase()+”
”);
document.write(“大写:”+s1.toUpperCase()+”
”);
✨查找字符串中字符出现的位置
document.write(s1.indexOf(“an”)+”
”);//从前往后查
document.write(s1.lastIndexOf(“an”)+”
”);//从后往前查
✨替换字符串,或者一个逗号
document.write(s1.replace(“SanFeng”,”WuJi”)+”
”);
✨替换所有符号
document.write(“10,20,30,40,50”.replace(/,/g,”:”)+”
”);
✨字符串拆分成数组形式
var str = “10,20,30,40,50”
console.log(str.split(“:”));//竖排下标和值对应的格式
✨去除字符串前后一个多余的字符
var s2 = “+zhangsan*”;
console.log( s2.trim() ); //能够去除前后多余的一个字符

内置对象——Math对象
console.log(Math.abs(-20)); //取绝对值
console.log(Math.ceil(10.00001));//将.0001进一取整
console.log(Math.floor(10.999));//舍去.999取整
console.log(Math.found(10.5));//四舍五入取整
console.log(Math.max(10,20));//两个数取最大
console.log(Math.min(10,20));//两数取最小
console.log(Math.random());//取0-1的随机数
console.log(Math.ceil(Math.random()*10000)%10+1);//取1-10的随机数

JavaScript 单机事件与元素标签操作
所有在body内可见的html标签(元素)均可以被添加事件:
✨格式:
点击我
这里button被称之为 事件源,onclick 称为事件,事件的内容称为事件处理程序,可以是很多很多条的代码,可以都写进一个函数里,将JS函数放在

 <h1 id="hid">欢迎学习JavaScript</h1>
    <button onclick="fun()">点击我</button>
    <ul id = "uid">
        <li>AAAA</li>
        <li>BBBB</li>
        <li>CCCC</li>
        <li>DDDD</li>
    </ul>
    <ol>
        <li>111111</li>
        <li>222222</li>
    </ol>
    
</body>
<script>
function fun(){
    //获取id属性值为hid的元素标签
    var hid = document.getElementById("hid");
    //输出元素之间的文本内容
    console.log(hid.innerHTML);
    //修改标签之间的内容
    hid.innerHTML = "JavaScript";
    //改变HTML元素样式,注意background-color中的横线要去掉,Color大写
    hid.style.backgroundColor = "#ddd";
}
//获取当前网页中的所有li元素标签,注意后面的方法Elements有 s 
var mlist = document.getElementById("uid").getElementsByTagName("li");
//遍历输出
for(var i in mlist){
    console.log(mlist[i].innerHTML);//遍历过程中i是第几个li的数字
    mlist[i].style.color="red";
}
</script>

JavaScript中的Timing定时器
✨在指定的毫秒数后执行函数
setTimeout(function,milliseconds);
✨在指定的毫秒数后重复执行函数
setInterval(function,milliseconds);
代码示例:

<script>
//定义3秒后执行参数中的函数
setTimeout(function(){
	console.log(“Hello JS!);
},3000);
</script>

✨计数器案例:

<body>
    <h2 id="hid">计数器:0</h2>
</body>
<script>
    m = 0;
    setInterval(function(){
        m++;
        document.getElementById("hid").innerHTML = "计数器:"+m;
    },1000)
</script>

✨清除定时:clearInterval();

<body>
    <h2 id="hid">计数器:0</h2>
    <button onclick="doStop()">停止</button>
</body>
<script>
    m = 0;
    var mytime = setInterval(function(){
        m++;
        document.getElementById("hid").innerHTML = "计数器:"+m;
    },1000)

    function doStop(){
        clearInterval(mytime);
    }
</script>

✨如何用一次定时实现循环效果

<script>
var m =0; mytime = null;
function doRun(){
	m++;
	document.getElementById(“hid”).innerHTML=“计数器:”+m;
	mytime = setTimeout(doRun,1000);
}
doRun();
function doStop(){
	clearTimeout(mytime);
}
</script>

实现简单计算器实例

<body>
    <form action="" name="myform" method="get">
        数值1:<input type="text" name="num1" size="10"/><br/><br/>
        数值2:<input type="text" name="num2" size="10"/><br/><br/>
        结果:<input tyoe="text" name="res" readonly style="border:0px;"/>
        <input type="button" onclick="doFun(1)" value="加"/>
        <input type="button" onclick="doFun(2)" value="减"/>
        <input type="button" onclick="doFun(3)" value="乘"/>
        <input type="button" onclick="doFun(4)" value="除"/>
    </form>
</body>

```javascript
<script>
    //处理函数
    function doFun(c){
        var m1 = parseInt(document.myform.num1.value);
        var m2 = parseInt(document.myform.num2.value);
        
        switch(c){
            case 1:var res = m1+"+"+m2+"="+(m1+m2);break;
            case 2:var res = m1+"-"+m2+"="+(m1-m2);break;
            case 3:var res = m1+"*"+m2+"="+(m1*m2);break;
            case 4:var res = m1+"/"+m2+"="+(m1/m2);break;
        }
        //将结果放置到第三个输入框中
        document.myform.res.value = res;
    }
</script>

JS简单操作元素标签实例

<body>
    <button onclick="dofun(1)">放大</button>
    <button onclick="dofun(2)">缩小</button>
    <button onclick="dofun(3)">隐藏</button>
    <br/><br/>
    <div style = "width:200px;height:200px;background-color:#ddd;"id="did"></div>
</body>
<script>
    var width = 200,height = 200;
    var did = document.getElementById("did");

    function dofun(m){
        switch(m){
            case 1:
                width += 10;
                height +=10;
                did.style.width = width+"px";
                did.style.height= height+"px";
                break;
            case 2:
                width -=10;
                height -=10;
                did.style.width = width+"px";
                did.style.height = height+"px";
                break;
            case 3:
                did.style.display = "none";
                break;
        }
    }
</script>

效果图:
前端:JavaScript(二)_第1张图片

事件的绑定方式:
Event事件由:事件源+事件+事件处理程序 三个部分构成
事件的绑定方式有:主动绑定和被动绑定
1)主动绑定:

<body>
    <button onclick="fun()">按钮1</button>
</body>
<script>
    function fun(){
        document.write("按钮1被点击了");
    }
</script>

被动绑定:

<body>
    <button id="bid">按钮2</button>
</body>
<script>
    document.getElementById("bid").onclick=function(){
        console.log("按钮2被点击了")
    }
</script>

获取事件源对象
1)主动绑定

<body>
    <button onclick="fun(this)">按钮1</button>
</body>
<script>
    function fun(ob){
        document.write(ob);
        console.log(ob);
	   ob.style.color = “green”;
}
</script>

2)被动绑定

<body>
    <button id="bid">按钮2</button>
</body>
<script>
    document.getElementById("bid").onclick=function(){
        console.log(this);
	   this.style.color=“red”;
    }
  </script>

批量绑定事件:
1.ondblclick双击事件

<script>
//获取上面所有li元素节点
var mlist = document.getElementsByTagName(“li”);
//遍历绑定事件
for(var i=0;i<mlist.length;i++){
    mlist[i].ondblclick = function(){
	//设置背景颜色
    this.style.backgroundColor = “#f0c”;
	}
}
</script>

2.JS处理之contextmenu右击事件
鼠标单击右键展示内容

<script>
//获取上面所有li元素节点后
//获取兼容的事件对象
document.oncontextmenu = function(ent){
var event = ent || window.event;
//获取鼠标在网页中的点击位置
var x = event.clientX;
var y = event.clientY;
console.log(x,y);

var uid = document.getElementById(“uid”);
uid.style.top = y+”px”;
uid.style.left = x+”px”;
uid.style.display = “block”;
return false;
}
</script>

3.JS处理事件之mouse鼠标移入移出事件和轮播效果图

<body>
    <h1>JS鼠标移动和轮播图</h1>
    <div id="did" onmouseover = "doStop()" onmouseout = "doStart()">
    <img src="./11.jpg" width="384"/>
    <img src="./22.jpg" width="384"/>
    <img src="./33.jpg" width="384"/>
    <img src="./44.jpg" width="384"/>
</div>
</body>
<script>
    var m =1;
    var mytime = null;
    //定义一个循环展示,每次只展示一张图片
    function show(x){
        var mlist = document.getElementById("did").getElementByTagName("img");
        for(var i =0;i<mlist.length;i++){
            if(x==i+1){
                mlist[i].style.display="block";
            }else{
                mlist[i].style.display="none";
            }
        }
    } 
    //开启定时轮播图片
    function doStart(){
        if(mytime==null){
            mytime = setInterval(function(){
                m++;
                show(m);
                if(m>=4){
                    m=0;
                }
            },2000);
        }
    }
    //停止轮播图片
    function doStop(){
        if(mytime !=null){
            clearInterval(mytime);
            mytime = null;
        }
    }
</script>

4.JS事件管理图片切换展示

<body>
    <h1>JavaScript语言实例--onmouseover鼠标移入事件</h1>
    <div id="did">
        <img id="mid" src="11.jpg" width="384"/>
    </div>
    <div id="list">
        <img src="11.jpg"/>
        <img src="22.jpg"/>
        <img src="33.jpg"/>
        <img src="44.jpg"/>
    </div>
</body>
<script>
    //获取所有小图列表
    var mlist=document.getElementById("list").getElementsByTagName("img");
    //遍历这些图片
    for(var i =0;i<mlist.length;i++){
        mlist[i].onmouseover = function(){
            document.getElementById("mid").src=this.src;
        }
    }
</script>

5.JS事件管理之放大镜效果
✨this.offsetTop:获取当前对象距离上面是多大的尺寸

<body>
    <h1>JavaScript语言实例--图片的放大镜效果</h1>
    <br/><br/><br/>
    <img id="mid" src="./33.jpg" width="384" height="240"/>
    <div id="did">
        <img src="./33.jpg"/>
    </div>
</body>
<script>
    //获取被放大图片和放大镜图片对象
    var mid = document.getElementById("mid");
    var did = document.getElementById("did");
    //为图片添加鼠标移入和移除事件
    mid.onmouseover = function(){
        //对放大镜进行定位
        did.style.top = this.offsetTop+"px";
        did.style.left = this.offsetLeft+this.offsetWidth+10+"px";
        did.style.display = "block";
    }
    mid.onmouseout = function(){
        did.style.display = "none";
    }
    //添加鼠标移动事件
    mid.onmousemove = function(ent){
        //获取兼容的鼠标事件对象
        var event = ent || window.event;
        //获取鼠标在图片上的位置
        var x = event.clientX - this.offsetLeft;
        var y = event.clientY -this.offsetTop;
        //定位放大镜位置
        did.scrollTop = y*5-150;
        did.scrollLeft = x*5-150;
    }
</script>

6.JS事件之拖动效果
鼠标的按下和抬起事件:
按下:onmousedown();
抬起:onmouseup();

<script>
   //获取div层对象
   var did = document.getElementById("did");
   //绑定鼠标按下事件
   did.onmousedown = function(ent){
        //获取兼容的事件对象
        var event = ent || window.event;
        //获取鼠标在div层上的位置
        var x = event.clientX-this.offsetLeft;
        var y = event.clientY-this.offsetTop;

        this.style.backgroundColor = "blue";
        //绑定鼠标移动事件
        document.onmousemove = function(e){
            var myevent = e || window.event;
            //定位:求拖动后图像的左上角坐标位置的
            did.style.top = myevent.clientY-y+"px";
            did.style.left = myevent.clientX-x+"px";
        }
   }
   //绑定鼠标松开事件
   did.onmouseup = function(){
        this.style.backgroundColor = "#ddd";
        //取消移动事件
        document.onmousemove = null;
   }
</script>

7.JS事件处理之keydown键盘事件
用法格式:
window.document.onkeydown = function(ent){
//获取兼容的事件对象
var event = ent || window.event;
//输出键盘值,再通过键盘值做判断
console.log(event.keyCode);
}
8.onload事件:

//当页面加载完成之后才自动执行的程序(可以将
                    
                    

你可能感兴趣的:(javascript)