有许多库允许通过通配符进行选择,但是您可以通过以下方式手动进行:
var elements = document.getElementsByClassName( /* class names other than aid_* ones */
var re = new RegExp('(^|\\s)aid_(\\s|$)');
var result = [];
for (var i=0, iLen=elements.length; i<iLen; i++) {
if (re.test(elements[i].className)) {
result.push(elements[i]);
}
}
请注意,getElementsByClassName返回一个活动的NodeList,但结果将是一个本机数组(getElementsByClassName 的各种库实现返回的任何内容)。
您还可以使用querySelectorAll,我认为它比 getElementsByClassName 得到更广泛的支持。
编辑
所以你尝试了:
var elements = document.getElementsByClassName('uiUnifiedStory uiStreamStory' +
' genericStreamStory aid_173333252718885 aid_183319479511' +
' uiListItem uiListLight uiListVerticalItemBorder');
var re = new RegExp('(^|\\s)aid_(\\s|$)');
var result = [];
for (var i=0, iLen=elements.length; i<iLen; i++) {
if (re.test(elements[i].className)) {
result.push(elements[i]);
elements.innerHTML = "<h6>benrox!</h6>";
糟糕,elements 是一个 NodeList,分配给它的 innerHTML 属性要么没有用,要么引发错误。您可能打算设置 NodeList 的当前成员的属性:
elements[i].innerHTML = "<h6>benrox!</h6>";
--------^^^
请注意,如果您有要添加的内容,您可以编辑您的问题。