黑馬程序員_學習日記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()

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