js-DOM操作-dom1

DOM是針對xml并經(jīng)過擴展應用于html的應用程序編程接口占键,前端工程師借助DOM并使用前端腳本語言來擁有對頁面內(nèi)容及結構的控制權。

  • DOM可以將任何html或xml文檔描繪成一個多層節(jié)點結構擦剑。
  • DOM對象中擁有許多不同類型的節(jié)點,這些節(jié)點都繼承自Node類型存谎,因此所有節(jié)點都共享著相同的屬性和方法返顺。

【節(jié)點的共有屬性及方法】

  • 屬性:nodeType,該屬性表明節(jié)點的類型站绪。
    <p id="p">我是一個段落</p>
    var node=document.getElementById('p');
    alert(node.nodeType)//1
    alert(node.childNodes[0].nodeType)//3
    alert(node.ownerDocument.nodeType)//9
    這是一個例子,nodeType的值是從1~12的數(shù)字丽柿,分別表示各種不同的類型恢准,例子中,node是<p>他是一個元素節(jié)點甫题,nodeType=1馁筐;他的子節(jié)點是文本節(jié)點,nodeType=3坠非;它屬于的文檔是一個文檔節(jié)點敏沉,nodeType=9;
    還有很多節(jié)點類型炎码,只是我沒咋看見盟迟,所以先不寫了。
  • 屬性:childNodes潦闲,該屬性保存著一個NodeList對象攒菠,它是一種 數(shù)組對象,用于保存一組有序的節(jié)點歉闰,可以通過位置來訪問這些節(jié)點辖众。
    var n1=node.childNodes[0];
    var n2=node.childNodes.item(1);
    var length=node.childNodes.length;
    發(fā)現(xiàn)該屬性的表現(xiàn)形式類似數(shù)組卓起,但他并不是Array的實例。但是我們可以將它轉(zhuǎn)化為數(shù)組凹炸。參考arguments對象如何轉(zhuǎn)化為數(shù)組
  • 屬性:parentNode戏阅,該屬性指向文檔樹中的父節(jié)點。
  • 屬性:previousSibling,該屬性表示該節(jié)點的前一個兄弟節(jié)點啤它。如果該節(jié)點為第一個兄弟節(jié)點奕筐,那么該屬性值為null。
  • 屬性:nextSibling,該屬性表示該節(jié)點的后一個兄弟節(jié)點蚕键。如果該節(jié)點為最后一個兄弟節(jié)點救欧,那么該屬性值為null。
  • 屬性:firstChild锣光,該屬性表示該節(jié)點的第一個子節(jié)點笆怠。
  • 屬性:lastChild,該屬性表示該節(jié)點的最后一個子節(jié)點誊爹。
  • 屬性:owerDocument蹬刷,該屬性表示整個文檔的文檔節(jié)點。
  • 方法:hasChildNodes()频丘,該方法在節(jié)點包含一個或多個子節(jié)點時返回true办成。
  • 方法:appendChild(),該方法用于向列表的末尾添加一個節(jié)點搂漠。
    node.appendChild(newnode);
  • 方法:insertBefore()迂卢,該方法用于在指定節(jié)點之前插入一個節(jié)點。下面這個例子是在空節(jié)點之前插入桐汤,也就是放在最后咯而克。
    node.appendChild(newnode,null);
  • 方法:replaceChild(),該方法是要替換某個節(jié)點怔毛,所以接受兩個參數(shù)员萍,第一個是新節(jié)點,第二個是被替換的節(jié)點拣度。
    node.replaceChild(newnode,node.childNodes[0])
  • 方法:removeChild()碎绎,這個方法只有一個參數(shù)就是要移除的參數(shù)。
    node.removeChild(node.childNodes[0]);
  • 方法:cloneNode()抗果,用于為調(diào)用這個方法的節(jié)點創(chuàng)建一個副本筋帖,接受兩個參數(shù),true:表示深度復制窖张,及復制節(jié)點及其整個子節(jié)點樹幕随。false:執(zhí)行淺復制,只復制節(jié)點本身宿接。
    var newnode=node.childNodes[0].cloneNode(true);
    node.appendChild(newnode);
  • 方法:normalize()赘淮,作用時連接該節(jié)點內(nèi)的兩個文本節(jié)點之間的空白辕录。

【需要注意】新增、插入梢卸、替換走诞、移除節(jié)點都是針對父節(jié)點的方法。父節(jié)點應用這些方法來調(diào)整子節(jié)點蛤高。


【Document類型】

文檔節(jié)點是每個文檔的根節(jié)點蚣旱,節(jié)點即對象,文檔節(jié)點及document對象是HTMLDocument的一個實例戴陡,是window對象的一個屬性塞绿,所以可將其作為全局對象來訪問。

  • 該對象的屬性:
    alert(document.nodeType);//9
    alert(document.nodeName);//#document
    alert(document.nodeValue);//null
    其余呢恤批,沒有父節(jié)點异吻,所以為null,沒有所屬文檔喜庞,本身就是一個文檔诀浪,存在子節(jié)點。
  • 子節(jié)點
    var body=document.body;
    var html=document.documentElement;
    另外還有文檔類型節(jié)點延都,注釋節(jié)點雷猪,也都可能是document的子節(jié)點,但是由于瀏覽器之間差異性太大晰房,也沒什么用求摇,我就不多深理解啦。
  • 文檔信息
    • title:包含著,<title>元素中的文本
      document.title='test';
    • 與網(wǎng)頁請求有關的三個屬性:url domain referrer
    • url屬性包含頁面完整的url(即地址欄中顯示的url)
    • domain屬性中只包含頁面的域名
    • referer屬性是來源頁面的URL殊者,可能會包含空字符串

這三個屬性月帝,只有domain是可以設置的,但不能給domain設置任何值幽污。只有domain值一樣的頁面,才可以互相訪問對方包含的js對象簿姨。
所有這些請求都包含在請求的http頭部距误,只不過是通過這些屬性,讓我們能夠訪問他們而已扁位。

  • 查找元素
    • 方法一:接受一個取得元素的id
      var node=document.getElementById('a');
      【注意】
      1准潭、IE8及較低版本不區(qū)分大小寫,所aA會被認為是一樣的域仇,但是其他瀏覽器都會區(qū)分刑然。
      2、IE7及較低版本會有一個怪癖:當(input暇务、textarea泼掠、button怔软、select)的name屬性與給定參數(shù)id的值一樣時,且前者在真正的id前面時择镇,會被取代挡逼。
    • 方法二:要取得元素的標簽名
      var nodes=document.getElementsByTagName('p');
      這個方法會返回一個HTMLCollection對象,作為一個動態(tài)集合腻豌,該對象與nodelist對象很相似家坎,可以用.item(index)[index]來訪問集合中的元素吝梅。
      但是HTMLCollection對象有自己的方法虱疏,.namedItem(string)[string]利用名字來訪問集合中的某一個元素苏携。
    • 方法三:要取得元素的name
      var radios= document.getElementsByName('color')做瞪;
      這個也會返回一個HTMLCollection對象。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兜叨,一起剝皮案震驚了整個濱河市穿扳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌国旷,老刑警劉巖矛物,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異跪但,居然都是意外死亡履羞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門屡久,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忆首,“玉大人,你說我怎么就攤上這事被环〔诩埃” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵筛欢,是天一觀的道長浸锨。 經(jīng)常有香客問我,道長版姑,這世上最難降的妖魔是什么柱搜? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮剥险,結果婚禮上聪蘸,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好健爬,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布控乾。 她就那樣靜靜地躺著,像睡著了一般浑劳。 火紅的嫁衣襯著肌膚如雪阱持。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天魔熏,我揣著相機與錄音衷咽,去河邊找鬼。 笑死蒜绽,一個胖子當著我的面吹牛镶骗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躲雅,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鼎姊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了相赁?” 一聲冷哼從身側響起相寇,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钮科,沒想到半個月后唤衫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡绵脯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年佳励,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛆挫。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赃承,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悴侵,到底是詐尸還是另有隱情瞧剖,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布可免,位于F島的核電站筒繁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏巴元。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一驮宴、第九天 我趴在偏房一處隱蔽的房頂上張望逮刨。 院中可真熱鬧,春花似錦、人聲如沸修己。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽睬愤。三九已至片仿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尤辱,已是汗流浹背砂豌。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留光督,地道東北人阳距。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像结借,于是被迫代替她去往敵國和親筐摘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

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

  • 本章內(nèi)容 理解包含不同層次節(jié)點的 DOM 使用不同的節(jié)點類型 克服瀏覽器兼容性問題及各種陷阱 DOM 是針對 HT...
    悶油瓶小張閱讀 638評論 0 1
  • 節(jié)點層次 DOM 可以將任何 HTML 和 XML 文檔描繪成一個由多層節(jié)點構成的結構船老。節(jié)點分為幾種不同的類型咖熟,每...
    云之外閱讀 539評論 0 1
  • 一、JS前言 (1)認識JS 也許你已經(jīng)了解HTML標記(也稱為結構)柳畔,知道了CSS樣式(也稱為表示)馍管,會使用HT...
    凜0_0閱讀 2,770評論 0 8
  • 一、概述 KVO荸镊,即:Key-Value Observing咽斧,它提供一種機制,當指定的對象的屬性被修改后躬存,則其觀察...
    DeerRun閱讀 10,061評論 11 33
  • 功能:通過手機號或者微信授權登錄张惹,并維護登錄狀態(tài);獲取和維護企業(yè)列表岭洲; 數(shù)據(jù)結構:GrandLoginKeys 類...
    行知2016閱讀 311評論 0 0