我想要一个函数来获取所有不是 span 的元素。
目前我已经创建了一个获取所有元素的函数,并且还创建了一个空数组。然后它遍历每个元素,如果它们不是跨度,则将它们添加到空数组中。并返回(可能不再为空)数组。
虽然这可行,但感觉有点低效。我觉得一开始甚至不获取跨度会更好,而且一定有某种我不知道的方法可以做到这一点。
是否有更有效的方法来获取所有非跨度的元素? (这是针对在 iOS 的 UIWebViews 中显示的 epub,没有 jquery)
这是我当前的代码。如果我做了一些愚蠢的事情,我深表歉意,因为我不是 JavaScript 专家:
function allElementsExceptSpans()
{
var result = new Array();
var allElements = document.getElementsByTagName('*');
for (var i = 0; i < allElements.length; i++)
{
if ((allElements[i].tagName != "span")
&& (allElements[i].tagName != "SPAN"))
{
result.push(allElements[i]);
}
}
return result;
}
最佳答案
querySelector
和 friends接受 CSS 选择器作为参数。
var not_span = document.querySelectorAll(":not(span)");
如果您想简化现有方法,那么您可以考虑使用 toLowerCase
而不是两个不同的字符串比较,并使用 Array.prototype.filter
而不是手动复制值(value)观:
function allElementsExceptSpans()
{
return Array.prototype.filter.call(document.getElementsByTagName("*"), function(element) {
return element.tagName.toLowerCase() !== "span";
});
}
关于javascript - 获取所有不是 span 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28023053/