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)
querySelector和朋友接受一个CSS选择器作为他们的参数.
var not_span = document.querySelectorAll(":not(span)");
Run Code Online (Sandbox Code Playgroud)
如果您想简化现有方法,那么您可以使用toLowerCase而Array.prototype.filter不是手动复制值来代替两个不同的字符串比较:
function allElementsExceptSpans()
{
return Array.prototype.filter.call(document.getElementsByTagName("*"), function(element) {
return element.tagName.toLowerCase() !== "span";
});
}
Run Code Online (Sandbox Code Playgroud)