国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript之querySelector和querySelectorAll使用說明

2019-11-20 23:38:31
字體:
供稿:網(wǎng)友
一開始很多人都會拿jquery的選擇器來跟這兩個api做對比(我也是),比較異同本來沒事,但卻使一些同學(xué)對這兩個api在瀏覽器中的實現(xiàn)產(chǎn)生了誤解,特別是再dom element上調(diào)用此api時。

下面是我的jsFiddle示例,我就以此展開說明:
復(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();
})();

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

querySelector只返回匹配的第一個元素,如果沒有匹配項,返回null。

querySelectorAll返回匹配的元素集合,如果沒有匹配項,返回空的nodelist(節(jié)點數(shù)組)。

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

目前IE8+,ff,chrome都支持此api(IE8中的selector string只支持css2.1的)。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 淮安市| 明光市| 弥勒县| 蕲春县| 苗栗市| 永善县| 合山市| 阜城县| 云南省| 龙井市| 乌兰浩特市| 专栏| 岢岚县| 惠来县| 宁陕县| 文化| 都匀市| 龙南县| 青州市| 邵东县| 封开县| 海盐县| 巴彦淖尔市| 柳河县| 元谋县| 库伦旗| 新安县| 贡觉县| 佛学| 疏勒县| 东光县| 巴彦县| 天台县| 随州市| 邹城市| 安塞县| 同仁县| 通道| 普安县| 柳河县| 乳山市|