获取所有未跨越的元素

nar*_*rco 0 javascript epub getelementsbytagname ios

我想要一个能够获得所有非跨越元素的函数.

目前我已经创建了一个获取所有元素的函数,并且还创建了一个空数组.然后它遍历每个元素,如果它们不是跨距,则将它们添加到空数组中.并返回(可能不再为空)数组.

虽然这有效,但感觉有点低效.我觉得最好不要在第一时间获得跨度,并且必须有一些我不知道的方法.

有没有更有效的方法可以获得所有不跨越的元素?(这适用于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;
}
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 6

querySelector朋友接受一个CSS选择器作为他们的参数.

var not_span = document.querySelectorAll(":not(span)");
Run Code Online (Sandbox Code Playgroud)

如果您想简化现有方法,那么您可以使用toLowerCaseArray.prototype.filter不是手动复制值来代替两个不同的字符串比较:

function allElementsExceptSpans()
{
    return Array.prototype.filter.call(document.getElementsByTagName("*"), function(element) {
        return element.tagName.toLowerCase() !== "span";
    });
}
Run Code Online (Sandbox Code Playgroud)