Javascript 获取所有不是跨度的图元

Javascript 获取所有不是跨度的图元,javascript,ios,epub,getelementsbytagname,Javascript,Ios,Epub,Getelementsbytagname,我想要一个函数,它可以获取所有不是跨度的元素 目前,我已经创建了一个获取所有元素的函数,还创建了一个空数组。然后它遍历每个元素,如果它们不是跨度,则将它们添加到空数组中。并返回(可能不再为空)数组 虽然这样做有效,但感觉有点低效。我觉得最好一开始就不要做跨距,肯定有什么方法我不知道 是否有更有效的方法可以获取所有非跨度元素?(这适用于iOS中UIWebView中显示的ePub,无jquery) 这是我目前的代码。如果我做了一些愚蠢的事情,我道歉,因为我不是javascript爱好者: funct

我想要一个函数,它可以获取所有不是跨度的元素

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

虽然这样做有效,但感觉有点低效。我觉得最好一开始就不要做跨距,肯定有什么方法我不知道

是否有更有效的方法可以获取所有非跨度元素?(这适用于iOS中UIWebView中显示的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;
}
函数等位基因sexceptspans()
{
var result=新数组();
var-allegements=document.getElementsByTagName('*');
对于(var i=0;i
并接受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";
    });
}
并接受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";
    });
}

前提是您的浏览器支持
:而不是
,这是CSS3的功能。例如,IE8没有,但IE8仍然拥有令人惊讶的市场份额。(IE8是新的IE6!但希望不会太久。)幸福是一个客户,他不在乎IE8中的事情是否看起来不好:)谢谢,嗯,有些事情我不知道!这种方法(如本文所述)会漏掉大写跨距吗?@narco-HTML元素名称不区分大小写。除非您正在编写XHTML,否则这不会是一个问题(这对绝大多数应用程序来说都是一个毫无意义的痛苦练习)。我应该提出最初的问题,这只适用于iOS中的UIWebViews,所以没有IE。从我目前的快速测试来看,这种方法似乎有效。如果您的浏览器支持
:而不是
,这是一个CSS3的东西。例如,IE8没有,但IE8仍然拥有令人惊讶的市场份额。(IE8是新的IE6!但希望不会太久。)幸福是一个客户,他不在乎IE8中的事情是否看起来不好:)谢谢,嗯,有些事情我不知道!这种方法(如本文所述)会漏掉大写跨距吗?@narco-HTML元素名称不区分大小写。除非您正在编写XHTML,否则这不会是一个问题(这对绝大多数应用程序来说是一个毫无意义的痛苦练习)。我应该提出最初的问题,这只适用于iOS中的UIWebViews,所以没有IE。从我目前的快速测试来看,这种方法似乎有效。