JavaScript DOM 編程藝術(shù)筆記(7章)

第七章

動(dòng)態(tài)創(chuàng)建標(biāo)記

  • document.write 方法:

  •   <script>
          document.write("<p>xxxxxxx</p>");
      </script>
    

    缺點(diǎn)是違背了“行為與表現(xiàn)分離原則”怠缸,即使把語(yǔ)句寫到外部函數(shù)中,還是需要加入<script>標(biāo)簽才能調(diào)用,不推薦

  • innerHTML 屬性:

      var testdiv = document.getElementById("testdiv");
      testdiv.innerHTML = "<p>xxxxxxx</p>"
    

    可讀可寫舌剂,簡(jiǎn)單粗暴裕便,缺點(diǎn)是沒(méi)法細(xì)化操作,而且會(huì)直接替換元素里面所有內(nèi)容催训。

  • createElement 方法

      document.createElement(nodeName)
    

    創(chuàng)建一個(gè)元素節(jié)點(diǎn)

  • createTextNode 方法

      document.createTextNode(text)
    

    創(chuàng)建一個(gè)文本節(jié)點(diǎn)

  • appendChild 方法

    節(jié)點(diǎn)創(chuàng)建后屬于“野生”的洽议,還需要加入節(jié)點(diǎn)樹,appendChild 方法可以為某個(gè)節(jié)點(diǎn)添加子節(jié)點(diǎn)

      parent.appendChild(child)
    
  • insertBefore 方法

      parentElement.insertBefore(newElement, targetElement)
    

    在 targetElement 前插入一個(gè)新節(jié)點(diǎn)漫拭,其中父元素節(jié)點(diǎn) parentElement 可以由 targetElement 的 parentNode 屬性得到绞铃。用法如下:

      var gallery = document.getElementById("imagegallery");
      gallery.parentNode.insertBefore(placeholder, gallery);
    
  • insertAfter “方法”

    DOM并沒(méi)有提供 insertAfter 方法,不過(guò)我們可以直接創(chuàng)建一個(gè):

      function insertAfter(newElement, targetElement ) {
          var parent = targetElement.parentNode;
          if (parent.lastChild == targetElement){
              parent.appendChild(newElement);
          } else {
              parent.insertBefore(newElement, targetElement.nextSibling);
          }
      }
    

    其中的 nextSibling 屬性是指目標(biāo)元素節(jié)點(diǎn)的下一個(gè)兄弟元素

Ajax

  • 解釋:

    一種異步加載技術(shù)嫂侍,可以做得到局部更新頁(yè)面中的一部分儿捧,而不用整體重新加載。其優(yōu)勢(shì)在于對(duì)頁(yè)面的請(qǐng)求以異步方式發(fā)送到服務(wù)器挑宠。而服務(wù)器不會(huì)用整個(gè)頁(yè)面來(lái)相應(yīng)請(qǐng)求菲盾,它會(huì)在后臺(tái)處理請(qǐng)求,與此同時(shí)用戶還能繼續(xù)瀏覽頁(yè)面并與頁(yè)面交互各淀。

  • XMLHttpRequest 對(duì)象

    XMLHttpRequest 對(duì)象充當(dāng)著客戶端與服務(wù)器之間的中間人角色懒鉴。JavaScript可以通過(guò)這個(gè)對(duì)象自己發(fā)送請(qǐng)求和處理響應(yīng)。

  • 創(chuàng)建 XMLHttpRequest 對(duì)象

    • 舊版本的Internet Explorer(IE5和IE6)中使用 ActiveX 對(duì)象
    var request = new ActiveXObject("Microsoft.XMLHTTP");
    
    
    • 其他瀏覽器(IE7+、Firefox临谱、Chrome璃俗、Safari 和 Opera)
    var request = new XMLHttpRequest();
    
    • 整合成 getHTTPObject 函數(shù)
    function getHTTPObject() {
    //兼容不同版本IE
    if (typeof XMLHttpRequest == "undefined") {
        try {return new ActiveXObject("Msxml2.XMLHTTP.6.0");}
            catch (e) {}
        try {return new ActiveXObject("Msxml2.XMLHTTP.3.0");}
            catch (e) {}
        try {return new ActiveXObject("Msxml2.XMLHTTP");}
            catch (e) {}
        return false;
    }
    return new XMLHttpRequest();
    
    
  • XMLHttpRequest 對(duì)象的 open 和 send方法

    1. open 方法用來(lái)規(guī)定請(qǐng)求的類型、URL 以及是否異步處理請(qǐng)求悉默。
      有三個(gè)參數(shù):

      • method:請(qǐng)求的類型城豁;GET 或 POST
      • url:文件在服務(wù)器上的位置
      • async:true(異步)或 false(同步)

      實(shí)例:

       xmlhttp.open("GET","demo_get.html",true);
      
    2. send 方法將請(qǐng)求發(fā)送到服務(wù)器。
      有一個(gè)參數(shù):

      • string:僅用于 POST 請(qǐng)求
  • 事件處理函數(shù) onreadystatechange , readyState 屬性和 status 屬性

    1. onreadystatechange

      當(dāng)請(qǐng)求被發(fā)送到服務(wù)器時(shí)抄课,我們需要執(zhí)行一些基于響應(yīng)的任務(wù)唱星。每當(dāng) readyState 改變時(shí),就會(huì)觸發(fā) onreadystatechange 事件跟磨。

    2. readyState

      服務(wù)器在向 XMLHttpRequest 對(duì)象發(fā)回響應(yīng)時(shí)间聊,該對(duì)象有許多屬性可用,瀏覽器會(huì)在不同階段更新 readyState 的值抵拘,有5個(gè)可能的值:

      • 0: 請(qǐng)求未初始化
      • 1: 服務(wù)器連接已建立
      • 2: 請(qǐng)求已接收
      • 3: 請(qǐng)求處理中
      • 4: 請(qǐng)求已完成哎榴,且響應(yīng)已就緒
    3. status

      • 200: "OK"
      • 404: 未找到頁(yè)面
    4. 實(shí)例:

    xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
    }
    
  • 獲取服務(wù)器返回的數(shù)據(jù)

    主要通過(guò)兩個(gè)屬性:responseText 和 responseXML

    1. responseText:獲得字符串形式的響應(yīng)數(shù)據(jù)。

       document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
      
    2. responseXML:用于保存 Content-Type 頭部中指定為“text/xml”的數(shù)據(jù)僵蛛,其實(shí)是一個(gè)DocumentFragment 對(duì)象叹话。

      xmlDoc=xmlhttp.responseXML;
      txt="";
      x=xmlDoc.getElementsByTagName("ARTIST");
      for (i=0;i<x.length;i++)
      {
          txt=txt + x[i].childNodes[0].nodeValue + "<br>";
      }
      document.getElementById("myDiv").innerHTML=txt;
      
  • 同源策略

    使用 XMLHttpRequest 對(duì)象發(fā)送的請(qǐng)求只能訪問(wèn)與其所在的HTML處于同一個(gè)域中的數(shù)據(jù),不能向其他域發(fā)送請(qǐng)求墩瞳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驼壶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喉酌,更是在濱河造成了極大的恐慌热凹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泪电,死亡現(xiàn)場(chǎng)離奇詭異般妙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)相速,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門碟渺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人突诬,你說(shuō)我怎么就攤上這事苫拍。” “怎么了旺隙?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵绒极,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蔬捷,道長(zhǎng)垄提,這世上最難降的妖魔是什么榔袋? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮铡俐,結(jié)果婚禮上凰兑,老公的妹妹穿的比我還像新娘。我一直安慰自己审丘,他們只是感情好吏够,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著备恤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锦秒。 梳的紋絲不亂的頭發(fā)上露泊,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音旅择,去河邊找鬼惭笑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛生真,可吹牛的內(nèi)容都是我干的沉噩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼柱蟀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼川蒙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起长已,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤畜眨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后术瓮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體康聂,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年胞四,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恬汁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辜伟,死狀恐怖氓侧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情导狡,我是刑警寧澤甘苍,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站烘豌,受9級(jí)特大地震影響载庭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一囚聚、第九天 我趴在偏房一處隱蔽的房頂上張望靖榕。 院中可真熱鬧,春花似錦顽铸、人聲如沸茁计。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)星压。三九已至,卻和暖如春鬼譬,著一層夾襖步出監(jiān)牢的瞬間娜膘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工优质, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竣贪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓巩螃,卻偏偏與公主長(zhǎng)得像演怎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子避乏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容