function gatherClasses() {
var tags = document.getElementsByTagName('*');
var cls, clct = {}, i, j, l = tags.length;
for(i = 0; i < l; i++) {
cls = tags[i].className.split(' ');
for(j = 0; j < cls.length; j++) {
if(!cls[j]) continue;
clct[cls[j]] = 'dummy'; //so we only get a class once
}
}
cls = [];
for(i in clct) {
cls.push(i);
}
return cls;
}
alert(gatherClasses())
繼承人用正則表達式匹配
function gatherClasses(matchString) {
if(matchString) {
var rxp = new RegExp(matchString);
} else {
var rxp = /.*/;
}
var tags = document.getElementsByTagName('*');
var cls, clct = {}, i, j, l = tags.length;
for(i = 0; i < l; i++) {
cls = tags[i].className.split(' ');
for(j = 0; j < cls.length; j++) {
if(!cls[j] || !rxp.test(cls[j])) {
continue;
}
clct[cls[j]] = 'dummy'; //so we only get a class once
}
}
cls = [];
for(i in clct) {
cls.push(i);
}
return cls;
}
//find classes that match 'stack'
alert(gatherClasses('stack'))
排序的。我沒有意識到你可以做與類屬性匹配的通配符(看到它的href),但我想沒有理由爲什麼不。剛剛沒有發生在我身上。但我真的是在不同的類名之後,而不是與他們一起包裝的元素。 – cletus 2009-02-05 11:05:02