亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

js高級程序設計筆記7--DOM2和DOM3

2024-04-27 15:06:00
字體:
來源:轉載
供稿:網友

選擇符API

Selectors API是由W3C發起制定的一個標準。致力于讓瀏覽器原生支持CSS查詢。

querySelector()方法

此方法接收一個CSS選擇符,返回與該模式匹配的第一個元素。如果沒有找到返回null.

var body = document.querySelector("body");var myDiv = document.querySelector("#myDiv");var selected = document.querySelector(".selector");var img = document.body.querySelector("img.button");

如果傳入了不被支持的選擇符,querySelector()方法會拋出錯誤。

querySelectorAll()方法

接收的參數與querySelector()方法一樣,但是返回的是一個NodeList的實例。

//取得所有<p>元素中的所有<strong>元素var strongs = document.querySelectorAll("p strong");

matchesSelector()方法

傳入一個css選擇符,如果調用元素與該選擇符匹配,則返回true.很多瀏覽器還沒有支持matchesSelector()方法,各個瀏覽器實現的方法不同。如果要用則寫過包裝函數。

function matchesSelector(element,selector){ if(element.matchesSelector){ return element.matchesSelctor(selector); }else if(element.msMatchesSelector){ return element.msMatchesSelector(selector); }else if(element.mozMatchesSelector){ return element.mozMatchesSelector(selector); }else if(element.webkitMatchesSelector){ return element.webkitMatchesSelector(selector); }else{ throw new Error("not supported"); }}

元素遍歷

對于元素間的空格,IE9及之前的版本不會返回文本節點,而其他瀏覽器都會返回文本節點。 為了彌補這一差異,Element Traversal規范新定義了一組屬性。 childElementCount:返回子元素(不包括文本節點和注釋)的個數。 firstElementChild:指向第一個子元素 lastElementChild:指向最后一個子元素。 PReviousElementSibling:指向前一個同輩元素。 nextElementSibling:指向后一個同輩元素。

HTML5擴展DOM

getElementsByClassName()方法:接收一個參數,一個包含一或多個類名的字符串,返回帶有指定類的所有元素的NodeList。var selected = document.getElementById("myDiv").getElementByClassName("selected");classList屬性:HTML5新增了一種操作類名的方式。可以讓操作更簡單更安全。這個classList屬性時新集合類型DOMTokenList的實例。DOMTokenList有個length屬性,并有以下方法: add(value):將給定的字符串添加到列表中。 contains(value):表示列表中是否存在給定的值。 remove(value):從列表中刪除指定的字符串。 toggle(value):如果存在則刪除,不存在則添加。<div class="bd user disabled">...</div>div.classList.remove("disabled");div.classList.add("current");

支持classList屬性的瀏覽器有Firefox3.6+和Chrome.

焦點管理

HMTL5也添加了管理DOM焦點的功能。 document.activeElement:這個屬性始終會引用DOM中當前獲得了焦點的元素。

var button = document.getElementById("muButton");button.focus();alert(document.activeElement == button);//true

document.hasFocus()方法:用于確定文檔是否獲得了焦點。

HTMLDocument的變化

HTML5擴展了HTMLDocument。 1. readyState屬性:有兩個可能的值:loading(正在加載文檔(,complete(已經加載文檔).

if(document.readyState == "complete"){ //執行操作}兼容模式 為了區分頁面的模式是標準的還是混雜的。IE為此給document添加了一個名為compatMode的屬性。標準模式下,document.compatMode的值為”CSS1Compat”,混雜模式下為”BackCompat”.

document.head引用文檔的元素。 document.charset:文檔中實際使用的字符集。 document.defaultCharset:瀏覽器設置的文檔默認的字符集。

自定義數據屬性

HTML5規定可以為元素添加非標準的屬性,但要添加前綴data-.

<div id="mydiv" data-appId="12345" data-myname="nicholas"></div>

可以通過元素的dataset屬性來訪問自定義屬性的值。

var appId = div.dataset.appId;var myName = div.dataset.myname;

插入文本

innerText:但firefox不支持 textContent:firefox支持

function getInnerText(element){ return (typeof element.textContent == "string")?element.textContent:element.innerText;}

css規則

CSSRule對象表示樣式表中的每一條規則。

div.box{ background-color:blue; width:100px; height:200px;}假設這條規則位于頁面中的第一個樣式表中。var sheet = document.styleSheets[0];var rules = sheet.cssRules || sheet.rules;//取得規則列表var rule = ruless[0];alert(rule.selectorText);//div.boxalert(rule.style.cssText);//完整的CSS代碼alert(rule.style.backgroundColor);//blue

創建規則

insertRule(規則文本,表示在哪里插入規則的索引).

sheet.insertRule("body{backgournd-color:silver}",0);

但IE8及更早版本不支持此方法,而是另外一個方法:

sheet.addRule("body{backgournd-color:silver}",0);

刪除規則

deleteRule(pos):接受一個參數,要刪除的規則的位置。 IE支持的方法removeRule()。

元素大小

偏移量。

offsetHeight:元素在垂直方向上占用的空間大小。以像素計。包括元素的高度,水平滾動條的高度、上邊框高度和下邊框高度。 offsetWidth:元素在水平方向上占用的空間大小。 offsetLeft:元素的左外邊框至包含元素的左內邊框之間的像素距離。 offsetTop:元素的上外邊框至包含元素的上內邊框之間的像素距離。 offsetParent:對包含元素的引用。 取得元素的左偏移量(上偏移量類似原理)。

function getElementLeft(element){ var actualLeft = element.offsetLeft; var current = element.offsetParent; while(current != null){ acrualLeft += current.offsetLeft; current = current.offsetParent; } return actualLeft;}

所有這些偏移量都是只讀的,而且每次訪問他們都需要重新計算。因此盡量避免重復訪問這些屬性。 2. 客戶區大小 指的是元素內容及其內邊距所占據的空間大小。 clientWidth:元素內容區域寬度加上左右內邊距寬度。 clientHeight:元素內容高度加上上下內邊距高度。 3. 滾動大小 scrollHeight:在沒有滾動條的情況下,元素內容的總高度。 scrollWidth:在沒有滾動條的情況下,元素內容的總寬度。 scrollLeft:被隱藏在內容區域左側的像素數。通過設置這個屬性可變改變元素的滾動位置。 scrollTop:被隱藏在內容區域上方的像素數。

遍歷

“DOM2級遍歷和范圍”模塊定義了兩個用于完成順序遍歷DOM結構的類型:NodeIterator和TreeWalder. 能夠基于給定的起點對DOM結構執行深度優先的遍歷操作。檢測瀏覽器是否支持:

var supportsTraversals = document.implementation.hasFeature("Traversal","2.0);var supportNodeIterator= (typeof document.createNodeIterator == "function");var supportTreeWalder = (typeof document.createTreeWalder == "function");

document.createNodeIterator()方法接收四個參數: root:想要作為搜索起點的樹中的節點。 whatToShow:表示要訪問那些節點的數字代碼。 filter:一個NodeFilter對象,或者一個表示接受還是拒絕某種特定節點的函數。 entityReferenceExpansion:布爾值,表示是否要擴展實體引用。在HTML中沒有用。 whattoShow參數是一個位掩碼。

NodeFilter.SHOW_ALL:顯示所有類型的的節點。 NodeFilter.SHOW_ELEMENT:顯示元素節點。 NodeFilter.SHOW_TEXT:顯示文本節點。 等等。

可以使用按位或操作符來組合多個選型。

var whatToShow = NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT;

filter參數:可以傳入一個NodeFilter對象或者一個函數。 每個NodeFilter對象只有一個方法,及acceptNode()方法。如果應該訪問給定的節點該方法返回NodeFilter.FILTER_ACCEPT,如果不應該訪問則返回NodeFilter.FILGER_SKip。 傳入的函數與acceptNode()方法類似。

var filter = { acceptNode:function(node){ return node.tagName.toLowerCase() == "p"?NodeFilger.FILTER_ACCEPT:NodeFilter.FILTER_SKIP; }};var iterator = document.createNodeIterator(root,NodeFilter.SHOW_ELEMENT,filter,false);

NodeIterator對象有兩個方法,nextNode()和previousNode()。第一次調用nextNode()返回根節點。

var div = document.getElementById("mydiv");var filter = function(node){ return node.tagName.toLowerCase() == "li"?NodeFilger.FILTER_ACCEPT:NodeFilter.FILTER_SKIP;};var iterator = document.createNodeIterator(root,NodeFilter.SHOW_ELEMENT,filter,false);var node = iterator.nextNode();while(node !== null){ alert(node.tagName); node = iterator.nextNode();}

TreeWalker

TreeWalker是NodeIterator的一個更高級的版本。增加了很多方法。

parentNode(): firstChild(): lastChild(): nextSibling(): previousSibling():

document.createTreeWalker():同document.createNodeIterator方法一樣接收四個參數。

var walker = document.createTreeWalder(root,NodeFilter.SHOW_ELEMENT,filter,false);

TreeWalker類型還有一個currentNode屬性。由于IE中沒有TreeWalker類型,所有使用遍歷的跨瀏覽器解決方案非常少。

范圍

后續補上


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品福利免费在线观看| 亚洲第一av网| 日韩美女av在线免费观看| 国产视频自拍一区| 欧美另类高清videos| 久久香蕉国产线看观看av| 黑人与娇小精品av专区| 欧美亚洲另类制服自拍| 日韩精品久久久久久福利| 大量国产精品视频| 91久久精品国产91久久性色| 韩曰欧美视频免费观看| 热久久美女精品天天吊色| 欧美二区在线播放| 国产一区二区香蕉| 久久久av一区| 在线播放国产一区中文字幕剧情欧美| 欧美老妇交乱视频| 国产成人综合av| 95av在线视频| 日韩专区在线播放| 亚洲嫩模很污视频| 中文字幕欧美日韩精品| 亚洲性日韩精品一区二区| 国产91九色视频| 久热爱精品视频线路一| 奇门遁甲1982国语版免费观看高清| 成人福利网站在线观看11| 久久精品国产亚洲7777| 另类视频在线观看| 97热在线精品视频在线观看| 狠狠做深爱婷婷久久综合一区| 国产亚洲一区二区精品| 日韩在线资源网| 久久精品国产清自在天天线| 亚洲人成电影网站色xx| 成人福利在线观看| 国内精品视频久久| 欧美电影在线观看完整版| 国产成人综合一区二区三区| 欲色天天网综合久久| 久久99久国产精品黄毛片入口| 欧美大学生性色视频| 国产在线视频欧美| 免费97视频在线精品国自产拍| 午夜精品视频网站| 亚洲色图第三页| 欧美性猛交xxxx久久久| 91麻豆桃色免费看| 欧美激情视频一区二区三区不卡| 国产视频精品一区二区三区| 欧美一级视频一区二区| 日本91av在线播放| 北条麻妃一区二区在线观看| 亚洲人成绝费网站色www| 一个人www欧美| 国产精品看片资源| 国产精品r级在线| 亚洲精品国产福利| 国产精品女视频| 国产日本欧美一区二区三区在线| 国产精品久久久久免费a∨大胸| 裸体女人亚洲精品一区| 国产999精品久久久影片官网| 69久久夜色精品国产69乱青草| 热久久这里只有精品| 欧美与黑人午夜性猛交久久久| 国产精品免费小视频| 精品久久国产精品| 欧美极品美女视频网站在线观看免费| 久久亚洲影音av资源网| 色黄久久久久久| 久久天天躁日日躁| 成人欧美一区二区三区黑人| 欧美最顶级丰满的aⅴ艳星| 国产69精品久久久久99| 欧美国产精品va在线观看| 欧美有码在线观看| 国产精品久久97| 成人黄色av网站| 亚洲精品一区av在线播放| 国产精品专区第二| 中文字幕久久精品| 欧美精品电影免费在线观看| 久久精品小视频| 国产精品久久久久aaaa九色| 成人字幕网zmw| 欧美电影免费看| 美女黄色丝袜一区| 成人黄色片在线| 亚洲国内高清视频| 91精品视频在线播放| 日本成人在线视频网址| 国产在线精品自拍| 日韩精品免费电影| 国产日韩欧美另类| 欧美日韩性视频在线| 欧美激情欧美激情在线五月| 国产成人精品免费久久久久| 欧美日韩激情小视频| 国产国产精品人在线视| 精品国产鲁一鲁一区二区张丽| 久久理论片午夜琪琪电影网| 亚洲免费视频一区二区| 一区二区在线视频| 成人中文字幕在线观看| 日韩精品免费在线视频| 亚洲成人在线视频播放| 91九色视频在线| 久久久久久九九九| 国产精品一区二区三区成人| 亚洲一区二区在线播放| 一本一本久久a久久精品牛牛影视| 日韩欧美国产一区二区| 中文字幕亚洲图片| 国产激情久久久久| 国产日韩精品视频| 久久91亚洲精品中文字幕| 国产精品av在线播放| 高清在线视频日韩欧美| 日韩一区二区三区xxxx| 影音先锋日韩有码| 久久精品男人天堂| 91国产视频在线| 日韩av影视综合网| 欧美黑人又粗大| 91九色单男在线观看| 国产精品热视频| 亚洲精品久久久久| 国产一区二区三区在线观看视频| 欧美黑人一级爽快片淫片高清| 日本亚洲精品在线观看| 久久黄色av网站| 亚洲人成免费电影| 欧美激情视频在线观看| 欧美精品videofree1080p| 久久精品中文字幕电影| 国产精品成人久久久久| 92看片淫黄大片欧美看国产片| 国产精品视频久久久| 色综久久综合桃花网| 日本亚洲欧美成人| 亚洲欧洲免费视频| 欧美成在线观看| 亚洲精品乱码久久久久久按摩观| 亚洲理论在线a中文字幕| 欧美午夜美女看片| 欧美中文字幕第一页| 国产精品嫩草影院久久久| 亚洲国产欧美一区| 成人97在线观看视频| 日本久久精品视频| 国产精品天天狠天天看| 中文字幕亚洲一区二区三区| 欧美大片网站在线观看| 成人在线视频网| 秋霞午夜一区二区| 精品日韩中文字幕| 成人亲热视频网站| 国产日韩欧美日韩大片| 黑人巨大精品欧美一区二区一视频| 国产aaa精品| 最近2019年好看中文字幕视频| 欧美日韩国产999|