JS面向对象编程基础部分(2) 3.31

**
DOM编程:
1.为什么需要DOM?
(1).通过dom编程,我们可以写出各种网页游戏;
(2).ajax基础;
2.简介:(附件简介原理图)
3.原理介绍:(原理介绍图)
4.如何把html文档映射成DOM树:
(dom树图)
5.dom对象简介:
(dom对象简介图)
6.window对象:
(1).confirm

举例:显示带有一段消息以及确认按钮和取消的对话框

<!--HTML代码-->
<body>
<input type="button" value="测试confirm" οnclick="testConfirm()"/>

</body>

//JSd代码:
function testConfirm(){
	var res=window.confirm("测试confirm");
	if(res){
		alert("确定");
	}else{
		alert("取消");
	}
}

(2).setInterval(函数名,毫秒数)按照指定的周期(毫秒级)循环调用某个函数或计算表达式

举例1:(时钟效果效果)

<!--HTML代码-->
<body>
<span id="myTime"></span>
</body>

//JSd代码:
function getMyTime(){
    //这是没法刷新时间的
    //document.write(new Date());
    //换一种方法,把时间加到span当中
    //在文本间的文本就是通过 对象.innerText来实现的
    document.getElementById("myTime").innerText=new Date().toLocaleString();

}

setInterval('getMyTime()',1000);

(3).clearInterval(timer)//timer为setInterval()方法返回的一个值
取消由setInterval()设置的定时器;

(4).setTimeOut()
在指定的毫秒数后开始执行某个函数或计算表达式,但只调用一次
举例:

            1.在打开页面5秒钟后跳出“hello”
            2.图片停止跑动后5秒又继续运动;


举例2:(图片切换效果)

<!--HTML代码-->
<body>
<div id="moveDiv" style="left:0px;">
<img src="1.jpg" id="moveObj"/>
</div>
</body>


//JSd代码:
var n=1;
var left;
var left2;
var count=0;
function run(){

	var left=document.getElementById("moveDiv").style.left;
	count++;
	if(count==10){
		//停止setInerval()
		clearInterval(myTimer);
		//重启setInterval()
		setTimeout('reRun()',5000);
		//一定要注意这边count要清0;否则会停不下来;
		count=0;
	}
	//首先取得图片img的src属性
	//通过一个取模算法,来循环得到图片地址
	document.getElementById("moveObj").src=(n++%4)+1+".jpg";
	//获取left属性并进行字符串和数值转换
	left=parseInt(left.substring(0,left.indexOf('p')));
	document.getElementById("moveDiv").style.left=(left+50)+"px";
}

//myTimer表示返回setInterval()的定时器值
var myTimer=setInterval('run()',1000);

//这边需要单独再开一个函数说明,因为要取得myTimer用于后面clearInterval()来停止
function reRun(){
	myTimer=setInterval('run()',1000);
}


(5).clerTimeout(timer);
取消setTimeout()定时器
举例:

//JSd代码:
function testClearTimeout(){
	alert("测试clearTimeout()");
}
var myTimer=setTimeout('testClearTimeout()',1000);
clearTimeout(myTimer);

(6).moveTo(x,y):把窗口的坐标移到指定目标
    moveBy(x,y):可相对于窗口的当前坐标把它移动指定像素
    resizeTo(x,y):放大窗口到指定大小
    resizeBy(x,y):按照指定的像素调整窗口的大小
    open(url,"_blank||_self","窗口特征"):打开一个新窗口或已命名窗口

<!--HTML代码-->
<body>
<input type="button" value="moveTo" οnclick="test(this)"/>
<input type="button" value="moveBy" οnclick="test(this)"/>
<input type="button" value="resizeTo" οnclick="test(this)"/>
<input type="button" value="resizeBy" οnclick="test(this)"/>
<input type="button" value="open" οnclick="test(this)"/>
</body>

//JSd代码:
function test(eventObj){
	if(eventObj.value=="moveTo"){
		window.moveTo(200,200);
		alert("aa");
	}else if(eventObj.value=="moveBy"){
		window.moveBy(100,100);
		alert("aa");
	}else if(eventObj.value=="resizeTo"){
		window.resizeTo(200,200);
		alert("aa");
	}else if(eventObj.value=="resizeBy"){
		window.resizeBy(100,100);
		alert("aa");
	}
	else if(eventObj.value=="open"){
		window.open("newOne.html","_blank","titlebar=no");
	}
}


(7).opener:返回对创建窗口的窗口引用:

举例:父窗口和子窗口对话:

父窗口代码:
<!--HTML代码-->
<body>
父窗口
<input type="button" value="创建一个新窗口" οnclick="test(this)"/>
<span id="info1" >消息</span>
<input type="text" value="" id="oldOne"/>
<input type="button" value="给子窗口发消息" οnclick="test(this)"/>

</body>

子窗口代码:
<!--HTML代码-->
<body>
<input type="text"  value="" id="newOne"/>
<input type="button" value="给父窗口发消息" οnclick="test(this)"/>
</body>

两者共享的JS代码:

//JSd代码:
var newWindow;
function test(eventObj){
	
	if(eventObj.value=="创建一个新窗口"){
		//创建一个窗口并且返回新窗口对象
		newWindow=window.open("newOne.html","_blank");
		alert("aa");
	}else if(eventObj.value=="给子窗口发消息"){
		//新窗口获得就窗口信息
		newWindow.document.getElementById("newOne").value=$("oldOne").value;
		alert("aa");
	}else if(eventObj.value=="给父窗口发消息"){
		//父窗口获得子窗口信息
		opener.document.getElementById("info1").innerText=$("newOne").value;
		alert("aa");
	}
}

function $(id){
	return document.getElementById(id);
}


(8). 案例
一个js版本的用户系统,当用户输入’sunchen’,密码’123’,就跳到第二页,5秒后,自动跳转到第三个页面。
*********************************************************************************8



*********************************************************************************8
//登入界面代码:
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="mario.css"></link>
<script languange="javascript" type="text/javascript" src="Mario.js"></script>

<script languange="javascript">
//JSd代码:
//登入界面JS代码:
function $(id){
	return document.getElementById(id);
}
function check(){
	if($("user").value=="wangbinhui"&&$("passw").value=="123"){
		return true;
	}else{
		$("user").value="";
		$("passw").value=""
		return false;
	}
}
</script>
</head>
<!--HTML代码-->
<body>
<form action="newOne.html">
用户名:<input type="text" id="user"/>
密 码:<input type="password" id="passw"/>
<input type="submit" value="登入" οnclick="return check()"/>

</body>
</html>
***********************************************************************



//跳转页面代码:

<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href=".css"></link>
<script languange="javascript" type="text/javascript" src="Mario.js"></script>
<script languange="javascript">
//JSd代码:
//跳转界面JS代码:
function openNewOne(){
	window.open("newTwo.html","_self");
	clearInterval(myTimer);
}
function changeSec(){
	$("waitSec").innerText=parseInt($("waitSec").innerText)-1;
}

var myTimer=setInterval("changeSec()",1000);
setTimeout("openNewOne()",5000);
</script>
</head>
<!--HTML代码-->
<body>
等待<span id="waitSec">5</span>秒后跳转到管理界面
</body>
</html>

*******************************************************

//管理界面代码:

<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href=".css"></link>
<script languange="javascript" type="text/javascript" src="Mario.js"></script>
</head>
<!--HTML代码-->
<body>
管理界面
</body>
</html>

***************************************************************

//三者共享JS代码:
function $(id){
	return document.getElementById(id);
}
*************************************************************



2.event对象:
(1).event对象代表事件的状态,比如事件在其中发生的元素,键盘按键状态,鼠标的位置
,鼠标的按钮状态,事件通常与函数结合使用;
(2).如何绑定事件监听:
    1.直接在某个html控件上指定
    <input type="button" vale="刷新页面" οnclick="test()">
    2.getElementById("id名")获取控件后,再绑定:
    function test(){`````````}
    document.getElementById("bnt1").οnclick=test;
    3.通过addEventListener()或则attachEvent()来绑定;
    4.一个事件可有多个事件监听者;
    W3C DOM标准:
    [Object].addEventListener(“name_of_event”,fnHandler,bCapture);
    [Object].removeEventListener(“name_of_event”,fnHandler,bCapture);
    IE中独有的事件监听方法:
    [Object].attachEvent(“name_of_event”,fnHandler,bCapture);
    [Object].detachEvent(“name_of_event”,fnHandler,bCapture);

案例:如果我们有一个投票系统,但是只能投一次票(使用attachEvent detachEvent)


<script languange="javascript">
//JSd代码:

	function test(){
		window.alert("你投了一次票");
		document.getElementById("bnt1").removeEventListener("click",test);
	}
</script>
</head>
<!--HTML代码-->
<body>
<input type="button" id="bnt1" value="投票"/>
<script language="javascript">
	//特别注意这时不是Onclick了,而是click,不然会不兼容;
	document.getElementById("bnt1").addEventListener("click",test);
</script>
</body>


****************************

案例:要求用户在一个输入框中输入一个数,如果不是数字,则给出提示(你输入的不是数字)


<script languange="javascript">
//JSd代码:

	function test(event){
		//0~9的ASCII码范围
		if(event.keyCode<48||event.keyCode>57){
			alert("你输入的不是一个数");
			return false;
		}
	}
</script>
</head>
<!--HTML代码-->
<body>
<input type="text" id="input" οnkeypress="return test(event)"/>

</body>















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值