<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

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

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

     

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

     

    一、DOM(DocumentObjectModel)

    Dhtmlxml文檔

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

    M:模型

     

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

    clip_image002

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

     

    二、節(jié)點及其類型

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

     

             1.節(jié)點分為三種類型:

             1).元素節(jié)點

             2).屬性節(jié)點

             3).文本節(jié)點

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

     

    三、屬性和方法

    1.查找節(jié)點:

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

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

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

            

    2.節(jié)點屬性:

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

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

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

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

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

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

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

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

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

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

     

    3.節(jié)點方法:

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

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

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

    document.createElement(nodeName);創(chuàng)建元素節(jié)點。

    document.createTextNode(nodeName) ;創(chuàng)建一個文本節(jié)點。

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

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

     

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

     

    4.練習:

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

    省份與城市的數(shù)據(jù)保存在xml文件中,在此只列出關(guān)鍵JavaScript代碼。

     

    Javascript:

    window.onload = function(){

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

       

        // 設(shè)置<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");

               // 查找指定省份節(jié)點        

               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;

                  }

               }

               // 獲取對應(yīng)省份的所有城市

               var cities = provinceNode.childNodes;

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

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

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

                      // 創(chuàng)建option元素節(jié)點

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

                      // 創(chuàng)建文本節(jié)點

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

                      // 將文本節(jié)點添加到option元素節(jié)點

                      optionNode.appendChild(textNode);

                      // option元素節(jié)點添加到select元素節(jié)點中

                      selectCity.appendChild(optionNode);

                  }

               }

           }     

        }

    }

     

    2).添加和刪除聯(lián)系人,并在當前頁面動態(tài)顯示聯(lián)系人信息。

    window.onload = function(){

    //------------ 添加聯(lián)系人 ---------------  

        //獲取提交按鈕

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

        //設(shè)置提交事件

       

        sbumitform.onclick = function(){

           // 獲取提交的聯(lián)系人信息

           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;

           }

           //創(chuàng)建表格中的<tr>節(jié)點

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

           //創(chuàng)建表格中的<td>節(jié)點,并將信息添加進去

           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節(jié)點

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

        // 設(shè)置它們的onclick事件

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

           deletes[i].onclick = function(){

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

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

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

               if(doDelete == true){

                  // 刪除聯(lián)系人

                   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++){

           // 設(shè)置為選中狀態(tài)

           items[i].checked = "checked";

        }

    }

     

    function funcheckedNo(){

        // 獲取所有選擇項

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

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

           // 設(shè)置為非選中狀態(tà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++){

               // 判斷是否為選中狀態(tài),然后設(shè)置為反向狀態(tà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++){

               // 判斷是否為選中狀態(tài),然后設(shè)置為反向狀態(tà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(){

           // 設(shè)置標簽

           if(checkedAll_2.checked == true){

               funcheckedAll();

           } else {

               funcheckedNo();

           }

        }

        //設(shè)置每一項的onclick事件,它們將影響全選/全不選的狀態(tài)。

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

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

           items[i].onclick = function(){

               // 取出所有項,判斷他們的選中狀態(tài)。

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

               var checkedAll = true;

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

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

                      checkedAll = false;

                      break;

                  }

               }

               // 如果全部選中,則設(shè)置全選/全不選為選中狀態(tài)

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

               if(checkedAll == true){

                  checkedAll_2.checked = "checked";

               }else{

                  checkedAll_2.checked = null;

               }

           }

        }

    }

     

     

             Merry Christmas,晚安!


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 国产精品成人免费观看| 亚洲系列中文字幕| 成人亚洲性情网站WWW在线观看| 夜夜嘿视频免费看| 91在线视频免费91| 亚洲综合免费视频| 成人黄色免费网址| 成人免费午夜无码视频| 搡女人免费视频大全| 天天天欲色欲色WWW免费| 韩国欧洲一级毛片免费| 亚洲欧洲精品一区二区三区| 91在线精品亚洲一区二区| 亚洲黄色在线电影| 国产精品久久亚洲不卡动漫| 亚洲情A成黄在线观看动漫软件| 久久亚洲精品国产亚洲老地址| 亚洲熟女乱色一区二区三区| 亚洲成a人片在线观看天堂无码| 午夜亚洲WWW湿好爽| 一级中文字幕免费乱码专区| 最近更新免费中文字幕大全| 免费无码又爽又刺激网站| 91精品视频在线免费观看| 成人免费一级毛片在线播放视频| 成年女人18级毛片毛片免费| 国产免费久久精品| 无码一区二区三区免费视频| 日韩精品免费一区二区三区| 亚洲国产婷婷香蕉久久久久久| 亚洲女初尝黑人巨高清| 亚洲精品美女视频| 亚洲人成欧美中文字幕| 成人久久久观看免费毛片| 久热免费在线视频| 日本精品人妻无码免费大全 | 亚洲乱码国产乱码精华| 美女被暴羞羞免费视频| a级片免费观看视频| 成人福利免费视频| 波多野结衣免费视频观看|