获取所有不是 span 的元素
Get all elements that are not spans
我想要一个获取所有非跨度元素的函数。
目前我已经制作了一个获取所有元素的函数,也制作了一个空数组。然后它遍历每个元素,如果它们不是跨度,则将它们添加到空数组中。 returns(可能不再为空)数组。
虽然这有效,但感觉有点低效。我觉得一开始甚至不获取跨度会更好,而且一定有一些我不知道的方法可以做到这一点。
有没有更有效的方法来获取所有非 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
and friends 接受一个 CSS 选择器作为他们的参数。
var not_span = document.querySelectorAll(":not(span)");
如果您想简化现有方法,那么您可以考虑使用 toLowerCase
而不是两个不同的字符串比较,并使用 Array.prototype.filter
而不是手动复制值:
function allElementsExceptSpans()
{
return Array.prototype.filter.call(document.getElementsByTagName("*"), function(element) {
return element.tagName.toLowerCase() !== "span";
});
}
我想要一个获取所有非跨度元素的函数。
目前我已经制作了一个获取所有元素的函数,也制作了一个空数组。然后它遍历每个元素,如果它们不是跨度,则将它们添加到空数组中。 returns(可能不再为空)数组。
虽然这有效,但感觉有点低效。我觉得一开始甚至不获取跨度会更好,而且一定有一些我不知道的方法可以做到这一点。
有没有更有效的方法来获取所有非 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
and friends 接受一个 CSS 选择器作为他们的参数。
var not_span = document.querySelectorAll(":not(span)");
如果您想简化现有方法,那么您可以考虑使用 toLowerCase
而不是两个不同的字符串比较,并使用 Array.prototype.filter
而不是手动复制值:
function allElementsExceptSpans()
{
return Array.prototype.filter.call(document.getElementsByTagName("*"), function(element) {
return element.tagName.toLowerCase() !== "span";
});
}