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

             今天學(xué)習(xí)JavaScriptDOM加強(qiáng),javascript靈活性大家都知道。但我們學(xué)習(xí)的只是使用JavaScript

    對(duì)頁(yè)面的操作,為學(xué)習(xí)AJAX打下基礎(chǔ)。

     

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

     

    一、DOM(DocumentObjectModel)

    Dhtmlxml文檔

    Odocument對(duì)象的屬性和方法,它是核心對(duì)象,代表整個(gè)頁(yè)面。

    M:模型

     

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

    clip_image002

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

     

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

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

     

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

             1).元素節(jié)點(diǎn)

             2).屬性節(jié)點(diǎn)

             3).文本節(jié)點(diǎn)

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

     

    三、屬性和方法

    1.查找節(jié)點(diǎn):

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

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

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

            

    2.節(jié)點(diǎn)屬性:

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

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

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

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

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

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

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

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

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

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

     

    3.節(jié)點(diǎn)方法:

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

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

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

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

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

    node.appendChild(newNode);追加一個(gè)子節(jié)點(diǎn)。

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

     

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

     

    4.練習(xí):

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

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

     

    Javascript:

    window.onload = function(){

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

       

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

        province.onchange = function(){

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

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

           var oldcities = selectCity.childNodes;

           // 要保留請(qǐng)選擇...”,所以從1開(kāi)始

           var len = oldcities.length-1;

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

               selectCity.removeChild(selectCity.lastChild);

           }  

          

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

           // 獲取當(dāng)前省份

           var province = this.value;

           if(province != ""){

               // 加載XML文件

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

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

               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;

                  }

               }

               // 獲取對(duì)應(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é)點(diǎn)

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

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

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

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

                      optionNode.appendChild(textNode);

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

                      selectCity.appendChild(optionNode);

                  }

               }

           }     

        }

    }

     

    2).添加和刪除聯(lián)系人,并在當(dāng)前頁(yè)面動(dòng)態(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;

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

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

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

           if(name == ""){

               alert("請(qǐng)輸入姓名!");

               return false;

           }

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

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

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

           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é)點(diǎn)

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

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

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

           deletes[i].onclick = function(){

               // 獲取姓名,并詢問(wèn)是否刪除

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

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

               if(doDelete == true){

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

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

               }         

               return false;

           }

        }

    }

     

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

    function funcheckedAll(){

        // 獲取所有選擇項(xiàng)

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

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

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

           items[i].checked = "checked";

        }

    }

     

    function funcheckedNo(){

        // 獲取所有選擇項(xiàng)

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

           // 獲取所有選擇項(xiàng)

           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";

               }

                 

           }

        }

        // 提交,顯示所有被選中的項(xiàng)目

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

        checkedSubmit.onclick = function(){

           // 獲取所有選擇項(xiàng)

           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";            

               }            

           }

           // 如果有被選中的項(xiàng)目,則提示

           if(itemssend != "")

               alert(itemssend);

        }  

        // 全選/全不選 checkbox

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

        checkedAll_2.onclick = function(){

           // 設(shè)置標(biāo)簽

           if(checkedAll_2.checked == true){

               funcheckedAll();

           } else {

               funcheckedNo();

           }

        }

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

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

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

           items[i].onclick = function(){

               // 取出所有項(xiàng),判斷他們的選中狀態(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,晚安!


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲日韩在线视频| 免费看一级做a爰片久久| 亚洲AV无码成人精品区在线观看| 色欲aⅴ亚洲情无码AV蜜桃| 18禁超污无遮挡无码免费网站国产| 老汉色老汉首页a亚洲| 97在线视频免费| 亚洲一卡2卡3卡4卡国产网站| 1024免费福利永久观看网站| 亚洲av成人一区二区三区| 7723日本高清完整版免费| 亚洲Av高清一区二区三区| 成人au免费视频影院| 亚洲av日韩aⅴ无码色老头| 全部免费国产潢色一级| 一级做a爰全过程免费视频毛片| 亚洲综合色区在线观看| 成人毛片100免费观看| 久久亚洲国产精品一区二区| 免费国产黄网站在线观看| 亚洲乱码在线播放| 性做久久久久免费观看| 精品国产福利尤物免费| 亚洲国产精品久久久久网站| 69成人免费视频| 国产亚洲精品美女2020久久 | 免费在线视频你懂的| 国产成人精品日本亚洲11| 小小影视日本动漫观看免费| 成人免费观看男女羞羞视频| 久久精品国产亚洲综合色| 国内精品乱码卡1卡2卡3免费| 亚洲AV无码一区二区三区久久精品 | 免费jjzz在线播放国产| aa级女人大片喷水视频免费| 97久久精品亚洲中文字幕无码| 18禁超污无遮挡无码免费网站国产| xxxxxx日本处大片免费看| 亚洲精品永久www忘忧草| 免费很黄很色裸乳在线观看| 日韩电影免费观看|