我有一些包含数千种不同CSS选择器的JSON,这里有各种各样的样本......
"#mid_ad_title",
"#mid_mpu",
"#mid_roll_ad_holder",
".SidebarAdvert",
".SitesGoogleAdsModule",
".SkyAdContainer",
"a[href$=\"/vghd.shtml\"]",
"a[href*=\"/adrotate/adrotate-out.php?\"]",
"a[href^=\"http://ad-apac.doubleclick.net/\"]",
"#mn #center_col > div > h2.spon:first-child + ol:last-child",
"#resultspanel > #topads",
"#rhs_block > #mbEnd"
正如您所看到的,JSON由各种选择器组成 - 有些只是一个类,有些只是一个ID,有些是混合。
我想根据选择器的类型使用相关的JavaScript“get”方法,因此对于只有ID的选择器我会使用document.getElementById()
等。
当我循环访问JSON时,是否有人知道任何正则表达式或某些东西会告诉我选择器的类型? I.e "class", "id", "other"
。
提前致谢。
答案 0 :(得分:0)
我想你会在switch
中找到更多用途:
var results = [];
for(var i = 0; i < selectors.length; i++){
var s = selectors[i];
if( s.indexOf(' ') !== -1){
s = s.substring(0, s.indexOf(' '));
}
switch(selectors[i][0]){
case '#': // ID
results.push(document.getElementById(s.substr(1)));
break;
case '.': // Class
results.push(document.getElementsByClassName(s.substr(1)));
break;
default: // Tag
results.push(document.getElementsByTagName(s));
break;
}
}
然而,唯一可靠的解决方案是使用:
document.querySelectorAll(selector);