<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 78, comments - 34, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

             今天學習JavaScriptDOM加強,javascript靈活性大家都知道。但我們學習的只是使用JavaScript

    對頁面的操作,為學習AJAX打下基礎。

     

             JavaScriptDOM對頁面的直接操作,使用戶的體驗更加舒暢。再加上CSS的裝飾,那簡直太完美了!JavaScriptDOM的使用并不復雜,相比那些專業搞JavaScript開發簡單的多。下面我整理一下今日的學習內容。

     

    一、DOM(DocumentObjectModel)

    Dhtmlxml文檔

    Odocument對象的屬性和方法,它是核心對象,代表整個頁面。

    M:模型

     

    DOM樹這個東西,很多培訓機構都有講,看來他是一個經典!(用老佟的)

    clip_image002

    把上面的圖片旋轉180度,你就會看到一棵樹。

     

    二、節點及其類型

    這個是重點,一定要牢記,首先知道了DOMDOM下面就是這些。把框架記住了,使用JavaScriptDOM那就容易了。

     

             1.節點分為三種類型:

             1).元素節點

             2).屬性節點

             3).文本節點

             例如“<a href=”http://www.itcast.com.cn”>傳智播客</a>”,“<a></a>”是元素節點,“href”是屬性節點,“傳智播客”是文本節點。Htmlxml就不是這些節點相互套用嗎!

     

    三、屬性和方法

    1.查找節點:

    document.getElementById(Id);:根據指定的ID屬性值返回元素節點,Id是全局唯一的。如果不存在返回null

    document.getElementsByName(name);:根據指定的name屬性值,返回所有的元素節點。返回一個數組集合,可以調用它的length查看它的數量。

    node.hasChildNodes();查看元素節點是否有子節點,有返回true,無返回false。對屬性節點和文本節點無效。

            

    2.節點屬性:

    node.nodeName;返回節點的名稱,只讀屬性。

    node.nodeType;返回節點的類型,只讀屬性。返回1是元素節點,返回2是屬性節點,返回3是文本節點。

    node.nodeValue;返回或設置節點的值,讀/寫屬性。對元素節點無效。

    node.parentNode;返回節點的父節點,只讀屬性。

    node.childNodes;返回節點的所有子節點,是一個數組集合,只讀屬性。

    node.firstChild;返回節點的第一個子節點,只讀屬性。

    node.lastChile;返回節點的最后一個子節點,只讀屬性。

    node.nextSibling;返回節點的下一個兄弟節點,只讀屬性。

    node.previousSibling;返回節點的前一個兄弟節點,只讀屬性。

    node.innerHTML; 瀏覽器幾乎都支持該屬性,但不是 DOM 標準的組成部分。用來讀\寫某給定元素里的 HTML內容。

     

    3.節點方法:

    paraentNode.replaceChild(newChildNode, oldChildNode);替換節點,返回被替換節點的指針。如果新節點有子節點,也將被插入。

    node.getAttribute(attributeName);返回節點屬性值,如果不存在名稱為attributeName的屬性,返回空字符串。

    node.setAttribute(attributeName, attributeValue);設置節點屬性值。

    document.createElement(nodeName);創建元素節點。

    document.createTextNode(nodeName) ;創建一個文本節點。

    node.appendChild(newNode);追加一個子節點。

    node.insertBefore(newNode, targetNode);targetNode節點前插入一個新節點。

     

    整體上內容就這么多,不過今天還有三個練習。上邊的內容看起來簡單,但實際應用中并沒那么容易。這也許就是JavaScript吧!——看著簡單,用起來十分難!

     

    4.練習:

    1).在一個下拉列表框中選擇省份,在另一個下拉列表框中顯示對應的城市。

    省份與城市的數據保存在xml文件中,在此只列出關鍵JavaScript代碼。

     

    Javascript:

    window.onload = function(){

        var province = document.getElementById("province");

       

        // 設置<select id="province">的被改變事件

        province.onchange = function(){

           //----- 每次選擇省份時,要清空<select id="province">下的原有城市 -----

           var selectCity = document.getElementById("city");

           var oldcities = selectCity.childNodes;

           // 要保留請選擇...”,所以從1開始

           var len = oldcities.length-1;

           for(var i=1; i<len;i++){

               selectCity.removeChild(selectCity.lastChild);

           }  

          

           //----- 獲取城市并顯示 ------

           // 獲取當前省份

           var province = this.value;

           if(province != ""){

               // 加載XML文件

               var cityDoc = parseXml("cities.xml");

               // 查找指定省份節點        

               var provinces = cityDoc.getElementsByTagName("province");

               var provinceNode = null;

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

                  if(provinces[i].getAttribute("name") == province){

                      provinceNode = provinces[i];

                      break;

                  }

               }

               // 獲取對應省份的所有城市

               var cities = provinceNode.childNodes;

               // 包裝城市,插入到<select id="city">

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

                  if (cities[i].hasChildNodes()) {

                      // 創建option元素節點

                      var optionNode = document.createElement("option");

                      // 創建文本節點

                      var textNode = document.createTextNode(cities[i].firstChild.nodeValue);

                      // 將文本節點添加到option元素節點

                      optionNode.appendChild(textNode);

                      // option元素節點添加到select元素節點中

                      selectCity.appendChild(optionNode);

                  }

               }

           }     

        }

    }

     

    2).添加和刪除聯系人,并在當前頁面動態顯示聯系人信息。

    window.onload = function(){

    //------------ 添加聯系人 ---------------  

        //獲取提交按鈕

        var sbumitform = document.getElementById("submit");

        //設置提交事件

       

        sbumitform.onclick = function(){

           // 獲取提交的聯系人信息

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

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

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

           // 人名不能為空,如果空則返回并提示。使用正則表達式替換。

           var reg = /^\s*|\s*$/gi;

           name = name.replace(reg, "");

           if(name == ""){

               alert("請輸入姓名!");

               return false;

           }

           //創建表格中的<tr>節點

           var trNode = document.createElement("tr");

           //創建表格中的<td>節點,并將信息添加進去

           var tdNameNode = document.createElement("td");

           tdNameNode.appendChild(document.createTextNode(name));

           var tdPhoneNode = document.createElement("td");

           tdPhoneNode.appendChild(document.createTextNode(phone));

           var tdAddressNode = document.createElement("td");

           tdAddressNode.appendChild(document.createTextNode(address));

           var tdDeleteNode = document.createElement("td");

           var aNode = document.createElement("a");

           aNode.setAttribute("href","/delete?id=");

           aNode.appendChild(document.createTextNode("delete"));

           tdDeleteNode.appendChild(aNode);

           //td添加到tr

           trNode.appendChild(tdNameNode);

           trNode.appendChild(tdPhoneNode);

           trNode.appendChild(tdAddressNode);

          

           //tr添加到table

           document.getElementById("contacters").appendChild(trNode);

           return false;

        }

       

    //------------ 刪除系人 ---------------

        // 獲取所有a節點

        var deletes = document.getElementsByTagName("a");

        // 設置它們的onclick事件

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

           deletes[i].onclick = function(){

               // 獲取姓名,并詢問是否刪除

               var name = this.parentNode.parentNode.firstChild.firstChild.nodeValue;

               var doDelete = confirm("確認刪除聯系人"+name+"?");

               if(doDelete == true){

                  // 刪除聯系人

                   this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);

               }         

               return false;

           }

        }

    }

     

    3).人性化選擇喜好:全選、反選、全不選、提交

    function funcheckedAll(){

        // 獲取所有選擇項

        var items = document.getElementsByName("items");

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

           // 設置為選中狀態

           items[i].checked = "checked";

        }

    }

     

    function funcheckedNo(){

        // 獲取所有選擇項

        var items = document.getElementsByName("items");

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

           // 設置為非選中狀態

           items[i].checked = null;

        }

    }

     

    window.onload = function(){

        //為按鈕添加事件處理代碼,FORM中的button就是為javascript而生!

        // 全選

        var checkedAll = document.getElementById("CheckedAll");

        checkedAll.onclick = function(){

           funcheckedAll();

        }

        // 全不選

        var checkedNo = document.getElementById("CheckedNo");

        checkedNo.onclick = function(){

           funcheckedNo();

        }

        // 反選

        var checkedRev = document.getElementById("CheckedRev");

        checkedRev.onclick = function(){

           // 獲取所有選擇項

           var items = document.getElementsByName("items");

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

               // 判斷是否為選中狀態,然后設置為反向狀態

               if(items[i].checked == true){

                  items[i].checked = null;

               } else {

                  items[i].checked = "checked";

               }

                 

           }

        }

        // 提交,顯示所有被選中的項目

        var checkedSubmit = document.getElementById("send");

        checkedSubmit.onclick = function(){

           // 獲取所有選擇項

           var items = document.getElementsByName("items");

           var itemssend = "";

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

               // 判斷是否為選中狀態,然后設置為反向狀態

               if(items[i].checked == true){

                  itemssend += items[i].value +"\r\n";            

               }            

           }

           // 如果有被選中的項目,則提示

           if(itemssend != "")

               alert(itemssend);

        }  

        // 全選/全不選 checkbox

        var checkedAll_2 = document.getElementById("checkedAll_2");

        checkedAll_2.onclick = function(){

           // 設置標簽

           if(checkedAll_2.checked == true){

               funcheckedAll();

           } else {

               funcheckedNo();

           }

        }

        //設置每一項的onclick事件,它們將影響全選/全不選的狀態。

        var items = document.getElementsByName("items");

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

           items[i].onclick = function(){

               // 取出所有項,判斷他們的選中狀態。

               var items = document.getElementsByName("items");

               var checkedAll = true;

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

                  if(items[i].checked == false){

                      checkedAll = false;

                      break;

                  }

               }

               // 如果全部選中,則設置全選/全不選為選中狀態

               var checkedAll_2 = document.getElementById("checkedAll_2");

               if(checkedAll == true){

                  checkedAll_2.checked = "checked";

               }else{

                  checkedAll_2.checked = null;

               }

           }

        }

    }

     

     

             Merry Christmas,晚安!


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 色拍自拍亚洲综合图区| 中国黄色免费网站| 亚洲精品在线播放视频| 亚洲精品无码成人片在线观看| 1000部拍拍拍18勿入免费凤凰福利 | 久久亚洲中文字幕精品有坂深雪| 亚洲视频人成在线播放| 四虎www成人影院免费观看| 2019中文字幕在线电影免费| 中文字幕免费视频精品一| 久久精品国产亚洲AV| 亚洲人成网站看在线播放| 亚洲欧洲春色校园另类小说| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 久久国产色AV免费看| 国产一二三四区乱码免费| 男男gay做爽爽的视频免费| 亚洲乱色熟女一区二区三区蜜臀| 亚洲欧洲日产v特级毛片| 亚洲精品国产成人专区| 亚洲AV中文无码字幕色三| xxxxx做受大片在线观看免费| 亚洲成AV人片在WWW| 国产成人精品日本亚洲11| 亚洲国产精品成人综合色在线婷婷| 亚洲男人第一av网站| 亚洲av无码专区国产乱码在线观看| 亚洲综合国产一区二区三区| 亚洲午夜无码AV毛片久久| 亚洲一区二区三区国产精品| 亚洲国产日韩在线观频| 亚洲国产精品国产自在在线| 免费二级毛片免费完整视频| 亚洲 小说区 图片区 都市| 久久精品国产精品亚洲毛片| 亚洲第一极品精品无码久久| 亚洲va无码va在线va天堂| 久久精品国产亚洲av成人| 亚洲AV无码乱码国产麻豆| 亚洲天堂视频在线观看| 亚洲欧洲日产专区|