黑马程序员_学习日记59_705Dom1(事件、window对象、document对象)

一、简介

DOMDocument Object Model,文档对象模型)就是把Html页面模拟成一个对象,就像XDocument一样,把Xml模拟成了一个对象。

JavaScriptDom的关系就像C#ADO.Net的关系。

Dom也像WinForm一样,通过事件、属性、方法进行编程。

CSS+JavaScript+DOM=DHTML

node 节点

element 元素

二、事件

1、动态给文档注册事件

<!-- 只能给事件注册一个方法,这里f1是事件响应函数 -->
<!--点击按钮,动态给文档注册单击事件-->
<head>
         <title></title>
         <script type="text/javascript">
             function f1() {
                 alert("别点我!");
        }   
    </script>
</head>
<body>
    sdklafjklajsfkjklsjafkjlas
    <input type="button"value="click" οnclick="document.οnclick=f1"/>
</body>

2、动态注册多个事件:

1attachEvent只有IE支持

<head>
         <title></title>
         <script type="text/javascript">
             //相当于C#中的btn.Click+=f1
             document.attachEvent("onclick", f1);
             document.attachEvent("onclick", f2);
            //先弹出f2再弹出f1
             function f1() {
                 alert("f1");
             }
             function f2() {
                 alert("f2");
        }
    </script>
</head>
<body>
    sdklafjklajsfkjklsjafkjlas
</body>


2addEventListener  w3c标准(ff chrom等支持)

 document.addEventListener("click", f1);
         document.addEventListener("click", f2);
        //先弹出f1再弹出f2
             function f1() {
                 alert("f1");
             }
             function f2() {
                 alert("f2");
            }


三、基本对象

(一)window 顶级对象

1、使用window对象的方法可以省略window,比如alert()方法。

2window对象的方法

1confirm

<head>
         <title></title>
         <script type="text/javascript">
             function f1() {
                //弹出提示,返回bool类型
                 if (confirm('是否删除')) {
                     alert('删除');
                 }
                 else {
                     alert('不删除');
                 }
             }
    </script>
</head>
<body>
    <input type="button" value="删除" οnclick="f1()"/>
</body>

(2)navigate(只有IE支持)

<input type="button" value="navigate" οnclick="navigate('01.htm');" />

其他浏览器用window.location.href:

<input type="buttom" value="location" οnclick="location.href="01.htm";"/>

(3)setInterval(code,delay) 间隔一段时间执行指定的代码(类似于WinForm中的Timer)

<input type=”buttom” value=”setInterval” οnclick=”setInterval(‘alert(\‘abc\’)’,2000)”/>

function f3(){

         if(tmrId){

         clearInterval(tmrId);

         }

}

跑马灯案例:(vs)

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>我爱北京天安门</title>
    <script type="text/javascript">
        var flag = "left";
        var inter;
        function interval(flag) {          
            if (inter != null) {
                clearInterval(inter);
            }
            //run(flag)要加""
            inter = setInterval("run(flag)", 1000);
        };     
        function run(flag) {
            var head;
            var left;
            if (flag == "left") {
                head = document.title.substr(0, 1);
                left = document.title.substr(1);
            }
            else if(flag == "right"){
                head = document.title.substr(0, document.title.length-1);
                left = document.title.substr(document.title.length-1);
            }
            document.title = left + head;
        }; 
    </script>
</head>
<body>
    <input type="button"οnclick="interval('left')"value="left"/>
    <input type="button"οnclick="interval('right')"value="right"/>
</body>
</html>

(4setTimeout也是定时执行,但只执行一次。

3window对象的属性

window.location.hrefwindow.location.reload

window.eventIE下非常重要的属性,用来获取发生事件的信息,事件不局限于window对象的事件。

window.event.altKey 判断是否按下Alt

window.event.clientXclientY发生事件时鼠标在文档上的位置

window.event.screenXwindow.event.screenY屏幕上的位置

window.event.returnValue 取消后续默认行为的执行(火狐不支持)

   

function btn_click() {

var txt = document.getElementById("txt").value;

                 if (txt.length == 0) {

                 alert("请输入用户名");

                 //取消默认行为的执行submit

                 window.event.returnValue =false;

        }

}     


return false; 也能取消后续默认行为(都支持),但不能在动态注册事件中执行。

4window.event的属性

1srcElement:获得事件源对象。

2clipboardData对象,对粘贴板的操作。(只支持IE

asetData(“Text”,val),设置粘贴板中的值

<head>

    <title></title>

    <script type="text/javascript">

        function f1() {

            var t = document.getElementById("txt").value;

            window.clipboardData.setData("text", t);

        }

    </script>

</head>

<body>

    <input type="text"id="txt" value="http://www.qiushibaike.com"/>

    <input type="button"value="复制"οnclick="f1()"/>

</body>


b)禁止复制

<input id=”num1” type=”text” οndrag=”return false;” οncοpy=”alert(‘禁止复制’);”return false;>

c)复制自动加版权

<head>

         <title></title>

         <script type="text/javascript">

             //复制的时候自动加版权

             function ff() {

                 var t = clipboardData.getData("text");

                 t = t + "<br/>版权:http://www.itcast.cn";

                 clipboardData.setData("text", t);

        }

        </script>

</head>

<bodyοncοpy="setTimeout('ff()',100)"><!--注意加上延时-->


(二)window.documentwindow.document.body

1onload方法

//动态注册事件,窗体加载完成后执行

window.onload = function(){

         window.txt.value = "admin";

}

2document的方法

1document.write()

document.write(“<input type=’text’/><br/>”);

2document.writeln()

//writeln是用”\n”换行

document.writeln(“<pre>123132”);

document.writeln(“acbc</pre>”);

3document.getElementById()

window.onload = function () {

            //整个html文档根节点<html>

            var root = document.documentElement;

            var body = document.documentElement.chlidNodes[1];

            for (var i = 0; i < body.childNodes.length; i++) {

                document.write(body.childNodes[i].nodeName +"<br/>");

            }

        }

 

4getElementsByName()

<head>

         <title></title>

         <script type="text/javascript">

             function f1() {

                 //radio的集合

                 var radios = document.getElementsByName("sex");

 

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

                     if (radios[i].checked) {

                         alert(radios[i].value);

                         break;

                     }

               }

        }

    </script>

</head>

<body>

    <input type="radio"value="nan" name="sex" />男

    <input type="radio"value="nv" name="sex" />女

</body>


5getElementsByTagName()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章