DOM編程 學習筆記(一)


PS:雖然自己JS基本語法算是掌握了,但是其實在JS掌握的只是遠遠還不夠,網頁上有太多好看的動態效果都是用JS

做出來的,自己也就僅僅會那么一兩個動態的效果,學的只是皮毛。。。等有空的時候一定要好好的研究那些動態效果

的制作,實在是太炫酷了。。。先開始DOM的基本語法吧。。。等DOM和JQuery的基本語法和用法搞定后就去深入的研究

研究那些動態效果的制作。。。

DOM編程

學習內容

1.DOM簡單介紹

2.DOM解析方式

3.在網頁中使用DOM編程

4.DOM window對象以及Loaction對象的使用...

1.為什么使用DOM編程?DOM編程的使用可以增強界面的動態效果。。起初的時候是沒有DOM編程的...

由於HTML語言以及JS的出現,JS的建立與HTML的建立並非是一個人,那么我們在使用JS操作HTML的時候

就需要一個規定,規定JS如何去操作HTML文檔,因此W3School為此制定了規范,同時W3school也制定了

一套XML的DOM編程的規范。。。。

DOM的解析方式:
/*dom解析將按照標簽的層次關系體現出標簽的所屬,形成一個樹狀結構-DOM樹
樹中標簽以及文本甚至屬性稱為節點,節點也成對象,標簽通常也成為頁面中的元素*/
將標記型文檔解析一顆DOM樹,並將樹中的內存封裝成對象
好處:可以對樹中的節點進行任意操作,(增刪改查)
缺點:這種解析需要將整個標記型文檔加載進內容,意味着如果標記型文檔的體積很大,會浪費內存空間

另一種解析:SAX,非W3C標准
基於事件驅動的解析,獲取數據的速度很快,但是,不能進行增刪改查

DOM和SAX解析方法的區別:

dom解析方式優點:對文檔的增刪改查比較方便,缺點是占用內存比較大

SAx解析優點:占用內存比較少,缺點是只適合做文檔的讀取,不適合做文檔的增刪改查crud

html:負責提供標簽,對數據進行封裝,目的是便於對標簽中的數據進行解析
      簡單說:html是用標簽封裝屬性
css:負責提供樣式屬性,對標簽中的數據進行樣式的定義
簡單說:對數據進行樣式定義
DOM:負責將標簽型文檔以及文檔中所有內容進行解析,並封裝成對象,在對象中定義了更多的屬性和行為,便於對對象進行操作。
簡單說:將文檔和標簽以及其他內容變成對象
JS:負責提供程序設計語言,對頁面中的對象進行邏輯操作。
簡單說:負責頁面的行為定義,也就是頁面的動態效果,所以Js是動態效果的主力編程語言

DHTML + XMLhttpRequest = AJAX 通訊服務端 
BOM , Navigator,History對象
BOM:Browser Object Model:瀏覽器對象模型

這個模型方便於操作瀏覽器
而瀏覽器對應的對象就是window對象,API文檔查看Window

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript" type="text/javascript">
     function test()
     {
         alert("HELLO");
         var name=window.navigator.appName;//瀏覽器的名稱
         var version=window.navigator.appVersion;//平台版本
         document.write(name);
         document.write(version);
         history.back();//回到上一個界面
     }
     function goback()
     {
         window.history.back();
     }
</script>
</head>
<body>
     <input type="button" value="演示Window" onclick="test()" />
     <input type="button" value="back" onclick="goback()" />
</body>
</html>

上面的代碼定義了兩個按鈕來觸發window事件..

1.window對象的使用:

confirm();

<script type="text/javascript" language="javascript">
      function test()//網頁上用來刪除的對話框
      {
          var res=window.confirm("刪除");
          if(res)
          {
              window.alert("ok!");
          }else
          {
              window.alert("no");
          }
      }
</script>

setInterval("要執行的內容或者函數","設置執行的時間"); 

clearInterval("setInterval的函數名");

setTimeout("要執行的函數或者內容","設置執行的時間");

clearTimeout(setTimeout的函數名);

 

<script language="javascript" type="text/javascript">
       var num=0;
       function say()
       {
           if(num==5)
           {
               clearInterval(say);//終止setInterval的執行...
           }else{
               window.alert("hello world");
               num++;
           }
       }
       function test()
       {
           setInterval(say,1000);//每隔一秒輸出一次,使用按鈕觸發即可
       }
       function test1()
       {
           setTimeout(say1,1000);//設置一個函數,是這個函數在指定的時間后執行,使用按鈕觸發即可..
       }
       var num1=0;
       function say1()
       {
           if(num1==2)
           {
               clearTimeout(say1);//終止了setTimeout函數的執行...
           }else{
               window.alert("你好");
               num1++;
           }
       }
</script>

 

moveTo(x,y);

moveBy(x,y);

resizeto(x,y);

resizeby(x,y);   -->這幾種方法都可以使用按鈕來觸發完成

 

<script language="javascript" type="text/javascript">
     function test()
     {
         window.moveTo(100,100);//相對於屏幕的左上角移動100 100像素
         }
     function test1()
     {
         window.moveBy(100,100);//相對於當前窗口的左上角移動100 100像素
         }
     function test2()
     {
         window.resizeTo(100,100);//把窗口調整為100*100個像素
         }
     function test3()
     {
         window.resizeBy(100,100);//把窗口增加100 *100 個像素
         }
</script>

 

來個綜合例子:

 

 <script type="text/javascript">

        var timeid;
        function windowMethod(){

//            var flag = window.confirm("確定退出?");//彈出一個窗口,確定/取消
//            alert(flag);
         //window.setTimeout("alert('time out run')",4000);//4秒后彈出
           timeid =  window.setInterval("alert('time out run')",2000);//每兩秒彈出
            //關閉,對應的clearInteval


        }
        //window.open(...);//流氓廣告的原理
        function windowopen(){
            window.open("Adventor.html","_blank","height=500","width=500","status=yes",
                        "toolbar=yes","menubar=yes","location=yes");//放外面,不用點直接打開
          /* window.open("","_blacnk","height=200","width=200","status=no",
                    "toolbar=no","menubar=no","location=no");傳說中的廣告*/
            //close();當前窗口,執行close關閉,會有提示,因為當前窗口是你打開,close執行的是,自動打開的窗
        }
        function windowclose(){
            window.close();
        }
        function Stop(){
                clearInterval(timeid);
        }

        function windowMove(){
       //  moveBy(10,10);//點一下橫坐標移到10,縱坐標移到10,指的是整個窗口
           // moveTo(20,20);//移到指定的坐標點
            //resizeBy()調整窗口尺寸
            //resizeTo()

            /*for(var x = 1;x<50;x++){
                moveBy(10,0);
                moveBy(0,10);
                moveBy(-10,0);
                moveBy(0,-10);
            }//QQ抖動窗口,就是這個原理,返回一個程序,使對方的窗口執行
*/
           // scrollBy(10,10);//將窗口滾動x和y的偏移量
           // scrollTo();
        }
     </script>

    <input type="button" value="window方法" onclick="windowMethod()" />
    <input type="button" value="窗口移到" onclick="windowMove()" />
    <input type="button" value="窗口打開" onclick="windowopen()" />
    <input type="button" value="停止" onclick="Stop()" />

 

2.Location()對象的使用

 

<body>

    <script type="text/javascript" src="out.js"></script>
    <script type="text/javascript">
       
        function WindowLacation(){
            //var pro = location.protocol;
            var text = location.href;
            //alert(text);
            //給Location的href屬性設置一個值,並對其值進行解析,如果是http,進行鏈接訪問
            location.href = "http://www.sina.com.cn";
        }
     </script>

    <!--定義事件源,注冊事件相關聯的動作-->
    <input type="button" value="演示Lacation" onclick="WindowLacation()"/>
   
</body>

 

3.DOM的常見事件

 <script type="text/javascript">
        /*//事件的使用:
        //定義好 事件 = 處理方式
        onunload = function(){// 對象卸載完觸發 3
            alert("onunload run");
        }
        onload = function(){//瀏覽器打開,對象一加載完觸發 1
            alert("onload run");
        }
        onbeforeunload = function(){
            alert("onbeforeunload run");//對象卸載前觸發 2
        }*/

        onload = function(){
            window.status("加載完啦");//狀態欄,狀態欄中的文字,可以使用JS
        每隔一秒顯示一個字
        }

    </script>

來個小的練習:彈出廣告...

 <script type="text/javascript">
    //演示彈窗,頁面一加載,就執行
        //在當前頁面中定義廣告頁面腳本,在onload事件中完成廣告的彈窗

        onload = function(){
            window.open("Adventor.html","_blacnk","height=200","width=200","status=no",
                    "toolbar=no","menubar=no","location=no");
        }
    </script>
<body>
        <h1>廣告</h1>
        <h2>打廣告</h2>
        <script type="text/javascript" >
            //setTimeout("close()",3000);
            onunload = function(){//關掉就彈
                window.open("Adventor.html","_blacnk","height=200","width=200","status=no",
                        "toolbar=no","menubar=no","location=no");
            }
            setInterval("focus()",1000);//focus(),使焦點放在當前廣告窗口,管不了,也不能最小化
        </script>
</body>

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM