javascript - 获取所有不是 span 的元素

标签 javascript ios epub getelementsbytagname

我想要一个函数来获取所有不是 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;
}

最佳答案

querySelectorfriends接受 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/

相关文章:

javascript - VSCode : "Go to definition" not working

ios - iOS11中的深度链接回调问题

javascript - 如何在tinymce文本区域中输入字符时将字符附加到文本框,直到按ENTER键?

javascript - 我如何向他人提供在他们的网站上显示我的网站内容?

iphone - 当数据对象符合 NSCoding 时,UITableView 不显示新条目

ios - 复制 iOS 的 dashboard 应用程序按钮,一个带有长按手势识别器的按钮

javascript - 在 EPUB3 文件中使用查询字符串

javascript - 找出何时通过 Javascript 在 EPUB FXL 中查看页面

ios - 使用 SwiftUI 显示 .epub 文件

javascript - 谷歌地图Javascript无法获取用户的坐标