2.window、document对象0806

 

 一、    window : alert()/confirm()/setInterval/setTimeout

setInterval(code,time)方法可以每隔 time毫秒执行一次code.

其中的code有两种方式:

1.直接传入 某个方法 对象 - setInterval(showTime,1000);

2.直接传入要执行 的 js代码字符串 - setInterval("alert(1);",1000);

 

二、关于 for in (用来循环 对象的属性和值)

使用 for in 来循环数组时,会将 数组的属性先循环出来

然后再 循环 数组里的元素 ,但此时 循环出来的 k 是元素的下标

 

三、innerHTML

将 字符串 添加到 对应的 双标签 中间。

并且立刻对 该字符串进行解析,如果符合html标签的语法,

则,立即调用 浏览器的解析器,对该字符串进行html解析,并

生成对应的 dom 对象,最后,将该dom对象,追加到被添加的

对象的 子元素 集合(ChildNodes)中。

======================================================================

<html title="ddd" xmlns="http://www.w3.org/1999/xhtml">

    <script type="text/javascript">

        function test(){

            alert(document.documentElement);

            alert(document.documentElement.title);

        }

    </script>   

<body>

    <input type="button" οnclick="test()" value="test" />

 

 

这时返回的就是<html>标签,

=====================================================

当前的html代码解析成的DOM树就挂靠在window.document下

2.Window对象

(1)window.confirm(“是否删除”);//确定、取消对话框,返回true或false;

(1)function doDel(id){

            if(confirm("您是否要删除?")){

                alert("删除了第"+id+"行");

            }

        }

                <td><a href="javascript:doDel(1)">删</a> <a href="javascript:doModify(1,'0710班')">改</a></td>

(2)window.close();//关闭浏览器窗口

(3)window.prompt(text,defaultText) ;//弹出一个输入框,返回用户输入的值

            (3)当点击0710班时,弹出框:

    function changeName(){

            var str = prompt("请输入新班级名:","班级名");

            alert("str");

        }

改进:function changeName(tdObj){

            var str = prompt("请输入新班级名:",tdObj.innerHTML);//这里tdObj.innerHTML获得了td标签中的值:"0710班"

            if(str!=null){

                //alert(str);

                tdObj.innerHTML = str;

            }

        }

                <td οnclick="changeName(this)">0710班</td>

注意:在这里进行的操作都是针对 DOM树 的操作,在”查看源代码”中发现代码没有改变,当页面刷新后,对页面的修改不会保存,因为这时又重新加载页面

 

•         (4) window.navigate(url);//将网页重新导航到url,只支持IE,建议使用window.location.href=‘url’;//支持大多数浏览器

 

”修改”页面的实现:

//修改页面的实现

        function doModify(id,cName){

            //window.location="modify.htm?i="+id;

            //控制浏览器的地址栏,跳转到 指定页面上并带上指定参数

            window.navigate("modify.htm?i="+id+"&name="+cName);//URL传参 也叫get传参

        }

<a href="javascript:doModify(1,'0710班')">改</a></td>

 

**window.location.search用法

        window.onload = function(){

            alert(window.location);

        }

            alert(window.location.search);//代表URL参数字符串

 

 

•         (5) setInterval每隔一段时间执行指定的代码,第一个参数为代码的字符串,第二个参数为间隔时间(单位毫秒),返回值为定时器的标识

              var intervalId=setInterval("alert('hello')", 5000);

****窗体自动关闭页面

01.htm:    <input type="button" οnclick="window.open('C03_0806_adv.html');"value="广告页面自动关闭" />

C03_0806_adv.html:

<title>广告页面</title>

    <script type="text/javascript">

        window.onload = function(){

           // setInterval( showTime,1000);//这里showTime方法不加大括号{}

            var methodName = "showTime()";//调用方法执行的时候,如果带双引号就要加括号(),如果不带双引号,就不加()

              setInterval(methodName,1000);

        }

        var seconds = 5;

        function showTime(){

            if(seconds>0){

            seconds--;

            var divMsg = document.getElementById("msgDiv");

            divMsg.innerHTML = seconds+"秒后,窗体自动关闭";    

        }else

        window.close();

        }

    </script>

</head>

<body>

    广告来了---!

    <div id="msgDiv">

    5秒后,窗体自动关闭

    </div>

</body>

setInterval(showTime,1000)和setInterval(“showTime()”,1000)两者等价,第一个参数可以是一个方法的对象(方法的引用),也可以是js代码字符串;

•         (6) clearInterval取消setInterval的定时执行,相当于Timer中的Enabled=False。因为setInterval可以设定多个定时,所以clearInterval要指定清除那个定时器的标识,即setInterval的返回值。

var intervalId = setInterval("alert('hello')", 5000);

clearInterval(intervalId);

var timer;

        window.onload = function(){

//            setInterval( showTime,1000);//这里showTime方法不加大括号{}

              var methodName = "showTime()";

              timer= setInterval(methodName,1000);

        }

        var seconds = 5;

        function stopTimer(){

            clearInterval(timer);//根据计时器id,停止 指定的计时器

        }

    <input type="button" value="暂停"οnclick="stopTimer()" />

l       (7) setTimeout也是定时执行,但是不像setInterval那样是重复的定时执行,只执行一次,clearTimeout也是清除定时。很好区分:Interval:间隔;timeout:超时。

var timeoutId = setTimeout("alert('hello')", 2000);

//-------------------只执行一次的计时器

        var timeOutId;

        function testTimeOut() {

            timeOutId =setTimeout("alert('我只出现一次,我只看看');", 1000);

        }

        function stopTimeOut() {

            clearTimeout(timeOutId);

        }

l       8)showModalDialog弹出模态对话框,注意showModalDialog必须在onClick等用户手动触发的事件中才会执行,否则可能会被最新版本的浏览器当成广告弹窗而拦截。

•         第一个参数为弹出模态窗口的页面地址。

•         在弹出的页面中调用window.close()(不能省略window.close()中的window.)关闭窗口,只有在对话框中调用window.close()才会自动关闭窗口,否则浏览器会提示用户进行确认。

body、document对象的事件

l       (1)onload:网页加载完毕时触发,浏览器是一边下载文档、一边解析执行,可能会出现JavaScript执行时需要操作某个元素,这个元素还没有加载,如果这样就要把操作的代码放到body的onload事件中,或者可以把JavaScript放到元素之后。元素的onload事件是元素自己加载完毕时触发,body onload才是全部加载完成

l       (2)onunload:网页关闭(或者离开)后触发。

l       (3)onbeforeunload:在网页准备关闭(或者离开)前触发。

•         <body οnbefοreunlοad=“return ‘真的要放弃发帖退出吗?’; ">。显示的文字随浏览器版本而有差异。

l       window.event是非常重要的属性,用来获得发生事件时的信息,事件不局限于window对象的事件,所有元素的事件都可以通过event属性取到相关信息。类似于winForm中的e(EventArg).

•         altKey属性,bool类型,表示发生事件时alt键是否被按下,类似的还有ctrlKey、shiftKey属性,例子 <input type="button" value="点击" οnclick="if(event.altKey){alert('Alt点击')}else{alert('普通点击')}" /> ;

function testAltKey(){

            alert(window.event.altKey);

        }

    <input type="button" οnclick="testAltKey()" value="test altkey" />

 

•         clientX、clientY 发生事件时鼠标在客户区的坐标;screenX、screenY 发生事件时鼠标在屏幕上的坐标;offsetX、offsetY 发生事件时鼠标相对于事件源(比如点击按钮时触发onclick)的坐标。

function moveMouse(){

            var x = window.event.clientX;

            var y = window.event.clientY;

            document.getElementById("mouse").innerHTML=x+"=="+y;

•                 }

•         <body οnmοusemοve="moveMouse();">

    <div id="mouse"></div>

•          

•         returnValue属性,如果将returnValue设置为false,就会取消默认事件的处理。在超链接的onclick里面禁止访问href的页面。在表单校验的时候禁止提交表单到服务器,防止错误数据提交给服务器、防止页面刷新。

•         //window.event.returnValue不兼容火狐浏览器

    <a href="1.html" οnclick="window.event.returnValue=false;">超链接无效啦~~!</a>

这样点击后不会发生跳转

l       window.event对象的成员:

•         srcElement,获得事件源对象。几个事件共享一个事件响应函数用。****_click(object sender,EventArgs e)//只有IE支持。

function showSource(){

            alert( window.event.srcElement.value);

        }

    <input type="button" οnclick="showSource()" value="showSource" />

 

•         button,发生事件时鼠标按键,1为左键,2为右键,3为左右键同时按。//要测试event.button的值的时候,请在onmousedown事件中测试。如果在onclick事件中只能识别鼠标左键的单击。

l       clipboardData对象,对粘贴板的操作。clearData("Text")清空粘贴板;getData("Text")读取粘贴板的值,返回值为粘贴板中的内容;setData("Text",val),设置粘贴板中的值。

•         案例:复制地址给友好。见备注。

•         当复制的时候body的oncopy方法被触发,直接return false就是禁止复制。<body οncοpy="alert('禁止复制!');return false;"

•         很多元素也有oncopy、onpaste事件:

//------------自动复制当前页面到粘贴板

        function copyTo(){

            clipboardData.setData("Text","给你推荐个网站"+location);

            alert("复制成功");

        }

    <input type="button" onclick ="copyTo()" value="复制clipboardData" />

l       history操作历史记录

•         window.history.back()后退;window.history.forward()前进。也可以用window.history.go(-1)、window.history.go(1)前进

全选反选的实现:

//---------------通过name来查找元素

        function findEleByName(n,c) {

            var eles = document.getElementsByName(n);

            for (i = 0; i < eles.length; i++) {

                eles[i].checked = c.checked;

            }

        }

        function fanXuan() {

            var eles = document.getElementsByName("chkS");

            for (i = 0; i < eles.length; i++) {

                if (eles[i].type == "checkbox") {//排除掉 同名的 非复选框 对象

                    eles[i].checked = !eles[i].checked;

                }

            }

        }                <th><input type="checkbox" οnclick="findEleByName('chkS',this)"/></th>

                <td><input type="checkbox" name="chkS" value="1" /></td>

   <input type="button" οnclick="fanXuan()" value="反选" />   

    <input type="button" name="chkS" οnclick="window.open('C03_0806_adv.html');" />   

l       document是window对象的一个属性,因为使用window对象成员的时候可以省略window.,所以一般直接写document

l       在onclick等事件中写的代码会冲掉页面中的内容,只有在页面加载过程中write才会与原有内容融合在一起

l           <script type="text/javascript">

l               document.write('<font color=red>你好</font>');

l           </script>

getElementById方法(非常常用),根据元素的Id获得对象,网页中id不能重复。也可以直接通过元素的id来引用元素,但是有有效范围、form1.textbox1之类的问题,因此不建议直接通过id操作元素,而是通过getElementById

l       (*)getElementsByName,根据元素的name获得对象,由于页面中元素的name可以重复,比如多个RadioButton的name一样,因此getElementsByName返回值是对象数组。

l       (*)getElementsByTagName,获得指定标签名称的元素数组,比如getElementsByTagName("p")可以获得所有的<p>标签。

案例:点击一个按钮,被点击的按钮显示“呜呜”,其他按钮显示“哈哈”。

var buts;

        //窗体资源加载完成后,执行此匿名方法

        window.onload = function(){

            buts = document.getElementsByTagName("input");//根据 标签名获得所有的input对象

            for(i=0;i<buts.length;i++)//循环input对象组

            {

                if(buts[i].type=="button"){

                    buts[i].onclick = doClick;//为每个input对象的onclick事件注册方法 doClick

                }

            }

        }

       

        //点击按钮方法

        function doClick(){

            var clickBtn = window.event.srcElement;//获得被点击的按钮对象(事件源对象)

            clickBtn.value="呜呜~~~~(>_<)~~~~ ";//修改被点击按钮的value

            for(i=0;i<buts.length;i++)//循环,将其他按钮的value修改

            {

            if(buts[i]!=clickBtn)

                {

                    buts[i].value = "O(∩_∩)O哈哈~";

                }

            }

        }

l       几乎所有DOM元素都有innerText、innerHTML属性(注意大小写),分别是元素标签内内容的文本表示形式和HTML源代码,这两个属性是可读可写的。

•         <a href="http://www.itcast.cn" id="link1">传<font color="Red">智</font>播客</a>

•         <input type="button" value="inner*" οnclick="alert(document.getElementById('link1').innerText);alert(document.getElementById('link1').innerHTML);" />

l       用innerHTML也可以替代createElement,属于简单、粗放型、后果自负的创建

•         function createlink() {

•                     var divMain = document.getElementById("divMain");

•                     divMain.innerHTML = "<a href='http://www.rupeng.com'>如鹏网</a>";

•                 }

•         <span/>的innerHTML和<span></span>的innerHTML不一样。//建议,在使用之前要保证标签具有开始和结束标记,否则,会出现一下意想不到的后果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值