欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript之querySelector和querySelectorAll使用說(shuō)明

 更新時(shí)間:2011年10月09日 00:09:44   作者:  
其實(shí)關(guān)于querySelector和querySelectorAll的介紹說(shuō)明很多,在此主要是做個(gè)記錄
一開(kāi)始很多人都會(huì)拿jquery的選擇器來(lái)跟這兩個(gè)api做對(duì)比(我也是),比較異同本來(lái)沒(méi)事,但卻使一些同學(xué)對(duì)這兩個(gè)api在瀏覽器中的實(shí)現(xiàn)產(chǎn)生了誤解,特別是再dom element上調(diào)用此api時(shí)。

下面是我的jsFiddle示例,我就以此展開(kāi)說(shuō)明:
復(fù)制代碼 代碼如下:

(function(global) {
global.doc = document;
global.body = doc.getElementsByTagName('body')[0];
global.$ = function(id) {
return doc.getElementById(id);
}

global.Logger = function(id) {
this.logElem = $(id);
this.logArr = [];
};
global.Logger.prototype = {
constructor: global.logger,

append: function(comment) {
this.logArr.push('<p>' + comment + '</p>');
},

flush: function() {
this.logElem.innerHTML = this.logArr.join('');
},

clear: function() {
this.logElem.innerHTML = '';
this.logArr = [];
}
};
})(this);

(function() {
var logger = new Logger('log');

var items = $('inner').querySelectorAll('#main h4.inside');
logger.append(items.length);

for(var i = 0, len = items.length; i < len; i++) {
logger.append(items[i].innerHTML);
}

logger.flush();
})();

誤解就在于對(duì)$('inner').querySelectorAll('#main h4.inside')的實(shí)現(xiàn)理解,不少人一開(kāi)始幾乎都認(rèn)為是直接從div[id='inner']的孩子中進(jìn)行查找(我也是),這個(gè)#main有點(diǎn)礙眼。實(shí)際上它還是根據(jù)selector string從整個(gè)document上查找,再返回屬于div[id='inner']的子節(jié)點(diǎn)。很多人會(huì)疑惑,那么為什么不按照直接按父節(jié)點(diǎn)找子節(jié)點(diǎn)的方式來(lái)實(shí)現(xiàn)呢?就像elem.getElementsByTagName,我的想法是靈活selector string吧。

querySelector只返回匹配的第一個(gè)元素,如果沒(méi)有匹配項(xiàng),返回null。

querySelectorAll返回匹配的元素集合,如果沒(méi)有匹配項(xiàng),返回空的nodelist(節(jié)點(diǎn)數(shù)組)。

并且返回的結(jié)果是靜態(tài)的,之后對(duì)document結(jié)構(gòu)的改變不會(huì)影響到之前取到的結(jié)果。

目前IE8+,ff,chrome都支持此api(IE8中的selector string只支持css2.1的)。

相關(guān)文章

  • js的隱含參數(shù)(arguments,callee,caller)使用方法

    js的隱含參數(shù)(arguments,callee,caller)使用方法

    本篇文章只要是對(duì)js的隱含參數(shù)(arguments,callee,caller)使用方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • JavaScript的面向?qū)ο?一)

    JavaScript的面向?qū)ο?一)

    JavaScript的面向?qū)ο?一)...
    2006-11-11
  • JavaScript獲取/更改文本框的值的實(shí)例代碼

    JavaScript獲取/更改文本框的值的實(shí)例代碼

    這篇文章介紹了JavaScript獲取/更改文本框的值的實(shí)例代碼,有需要的朋友可以參考一下
    2013-08-08
  • JavaScript針對(duì)SPA應(yīng)用的前端優(yōu)化策略概述

    JavaScript針對(duì)SPA應(yīng)用的前端優(yōu)化策略概述

    前端性能優(yōu)化是Web開(kāi)發(fā)中非常重要的一環(huán),優(yōu)化能夠有效地提高網(wǎng)站的加載速度和用戶體驗(yàn),而對(duì)于SPA來(lái)說(shuō),由于其特殊的加載方式和數(shù)據(jù)交互方式,其優(yōu)化策略也具有一定的特殊性,需要詳細(xì)了解可以參考下文
    2023-05-05
  • 2種簡(jiǎn)單的js倒計(jì)時(shí)方式

    2種簡(jiǎn)單的js倒計(jì)時(shí)方式

    這篇文章主要為大家詳細(xì)介紹了2個(gè)簡(jiǎn)單js倒計(jì)時(shí)方式,一是帶天數(shù)的倒計(jì)時(shí),二是單純分鐘和秒倒計(jì)時(shí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • ionic2打包android時(shí)gradle無(wú)法下載的解決方法

    ionic2打包android時(shí)gradle無(wú)法下載的解決方法

    這篇文章主要為大家詳細(xì)介紹了ionic2打包android時(shí)gradle無(wú)法下載的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 微信小程序?qū)崿F(xiàn)select下拉框

    微信小程序?qū)崿F(xiàn)select下拉框

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)select下拉框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript實(shí)現(xiàn)拖拽功能

    JavaScript實(shí)現(xiàn)拖拽功能

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)拖拽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 關(guān)于刪除時(shí)的提示處理(確定刪除嗎)

    關(guān)于刪除時(shí)的提示處理(確定刪除嗎)

    在刪除時(shí)為了提醒用戶刪除數(shù)據(jù)的不可恢復(fù)一般都會(huì)有提示處理的,通常會(huì)使用js做到這一點(diǎn),下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
    2013-11-11
  • javascript數(shù)組常用方法匯總

    javascript數(shù)組常用方法匯總

    這篇文章主要匯總了javascript中數(shù)組常用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評(píng)論