我将解析一些带有URL为ID的div,如果相同的url/ID存在,则我想要绕过它。因此,在每次添加时,我都需要搜索数百个div以查找所有这些div具有的属性相同的值。
示例:
HTML:
所以如果存在stackoverflow,则绕过:
这将输出:
示例:
HTML:
<div data-id="http://stackoverflow.com"></div>
<div data-id="http://engadget.com"></div>
<div data-id="http://9gag.com"></div>
<div data-id="http://reddit.com"></div>
<div data-id="http://facebook.com"></div>
<div data-id="http://stackoverflow.com"></div>
<div data-id="http://twitter.com"></div>
<div data-id="http://mashable.com"></div>
所以如果存在stackoverflow,则绕过:
$('div[data-id="http://www.stackoverflow"]').length
如何用纯JS实现最快的方法?
编辑:
在尝试后,我发现这更加复杂:
由于我必须先添加内容,然后查找是否存在具有特定值属性的data-id两次,我正在努力通过过程实现尽可能快的方式。
这是我的HTML:
<div class="ele" data-id="http://stackoverflow.com">http://stackoverflow.com</div>
<div class="ele" data-id="http://engadget.com">http://engadget.com</div>
<div class="ele" data-id="http://9gag.com">http://9gag.com</div>
<div class="ele" data-id="http://reddit.com">http://reddit.com</div>
<div class="ele" data-id="http://facebook.com">http://facebook.com</div>
<div class="ele" data-id="http://stackoverflow.com">http://stackoverflow.com</div>
<div class="ele" data-id="http://twitter.com">http://twitter.com</div>
<div class="ele" data-id="http://mashable.com">http://mashable.com</div>
<div class="ele" data-id="http://bbc.com">http://bbc.com</div>
<div class="ele" data-id="http://twitter.ca">http://twitter.ca</div>
<div class="ele" data-id="http://google.com">http://google.com</div>
<div class="ele" data-id="http://apple.com">http://apple.com</div>
<div class="ele" data-id="http://cnn.com">http://cnn.com</div>
<div class="ele" data-id="http://imgur.com">http://imgur.com</div>
<div class="ele" data-id="http://9gag.com">http://9gag.com</div>
这里是我的JavaScript代码:
var a = document.getElementsByClassName("ele")
for (i=0;i<a.length;i++) {
var b = a[i].getAttribute("data-id");
if (document.querySelectorAll('div[data-id="' + b +'"]').length > 1){
console.log(a[i])
}
}
这将输出:
<div class="ele" data-id="http://stackoverflow.com">http://stackoverflow.com</div>
<div class="ele" data-id="http://9gag.com">http://9gag.com</div>
<div class="ele" data-id="http://stackoverflow.com">http://stackoverflow.com</div>
<div class="ele" data-id="http://stackoverflow.com">http://stackoverflow.com</div>
<div class="ele" data-id="http://9gag.com">http://9gag.com</div>
其中9gag.com和stackoverflow.com都存在两次以上。
我该如何只保留每个网址一个并删除其余的? 这是否是最快的方法?
data-id
值放入对象键中。在每个元素上检查是否已经存在于对象中,如果是,则删除该元素。这样你就只需要进行一次DOM选择。 - user2437417