Я пытался навсегда, но он просто не работает, как я могу проверить массив URL-адресов, которые я получил (document.getElementsByTagName('a').href;
), чтобы узнать, есть ли какой-либо из сайтов в другом массив?javascript - получить все теги привязки и сравнить их с массивом
ответ
var linkcheck = (function(){
if(!Array.indexOf){
Array.prototype.indexOf = function(obj){
for(var i=0; i<this.length; i++){
if(this[i]===obj){
return i;
}
}
return -1;
}
}
var url_pages = [], anchor_nodes = []; // this is where you put the resulting urls
var anchors = document.links; // your anchor collection
var i = anchors.length;
while (i--){
var a = anchors[i];
anchor_nodes.push(a); // push the node object in case that needs to change
url_pages.push(a.href); // push the href attribute to the array of hrefs
}
return {
urlsOnPage: url_pages,
anchorTags: anchor_nodes,
checkDuplicateUrls: function(url_list){
var duplicates = []; // instantiate a blank array
var j = url_list.length;
while(j--){
var x = url_list[j];
if (url_pages.indexOf(x) > -1){ // check the index of each item in the array.
duplicates.push(x); // add it to the list of duplicate urls
}
}
return duplicates; // return the list of duplicates.
},
getAnchorsForUrl: function(url){
return anchor_nodes[url_pages.indexOf(url)];
}
}
})()
// to use it:
var result = linkcheck.checkDuplicateUrls(your_array_of_urls);
Это довольно прямо вперед, реализация чистого метода JavaScript для достижения того, что я считаю, что спецификации призывы. Это также использует блокировки, чтобы предоставить вам доступ к набору результатов в любое время, если ваш список URL-адресов изменяется с течением времени, и новый список необходимо проверить. Я также добавил полученные теги привязки в виде массива, так как мы все равно итерации, так что вы можете менять свои свойства на лету. И так как было бы полезно иметь удобный метод для получения привязывающего тега путем передачи URL-адреса (сначала в результирующем наборе). В приведенных ниже комментариях включался фрагмент для создания indexOf для IE8 и переключался document.getElementsByTagName на document.links для получения динамического списка объектов.
getElementByTagName дает вам нодлист (массив узлов).
var a = document.getElementsByTagName('a');
for (var idx= 0; idx < a.length; ++idx){
console.log(a[idx].href);
}
Я действительно предлагаю вам использовать фреймворк для этого, например jQuery. Это делает вашу жизнь намного проще.
Пример с JQuery:
$("a").each(function(){
console.log(this.href);
});
Это довольно просто, хотя - бы это действительно будет проще с JQuery? Я думаю, что на самом деле может потребоваться больше символов для всех $ $(). Attr ('blahblah') и т. Д. –
@Mark: Я добавил пример с jquery. Как вы видите, это меньше, чем печатать. – some
Использование Jquery и может сделать некоторые вещи, как this-
$('a').each(function(){
if(urls.indexOf(this.href) !- -1)
alert('match found - ' + this.href);
})
URLs является существующий массив нужно сравнить с.
- 1. Получить все теги html с помощью Javascript
- 2. Получить текущее время и сравнить с массивом
- 3. Получить все существующие теги html с javascript
- 4. Заменить код привязки с массивом Javascript
- 5. теги ввода с массивом
- 6. Javascript/jQuery сравнить входное значение с массивом
- 7. Nodejs socket.io - Как получить все сокеты и сравнить их свойства?
- 8. уничтожить объекты и их привязки в JavaScript
- 9. Альтернативы добавлению JavaScript в теги привязки
- 10. Получить все теги ALT
- 11. Сравнить символ с массивом
- 12. замените все теги img на тег привязки
- 13. получить все связанные теги?
- 14. сравнить одно значение с массивом
- 15. Разделить строку и сравнить с массивом
- 16. PHP - Как я могу получить и обработать все изображения и их родительские теги привязки из блока контента?
- 17. найти все теги в XML и их позиции
- 18. Получить все элементы с подобным массивом идентификаторов в JavaScript
- 19. ServiceNow сравнить среды и теги
- 20. Получить все теги внутри div с помощью javascript
- 21. Javascript получить все теги с тем же именем
- 22. Пройдите через все теги HTML и измените их стиль
- 23. Вызов javascript из sifr заменил теги привязки?
- 24. Как сравнить диапазон с массивом?
- 25. PHP array_diff сравнить массивы с новым массивом
- 26. Разделить PHP и HTML-теги и объединить их в JavaScript
- 27. Получить все привязки к DependencyProperty
- 28. Найти все родительские теги привязки, связанные с этим элементом
- 29. Regex, чтобы получить HTML-кнопки и теги привязки без атрибута
- 30. Флажок привязки к нокауту с массивом
Обратите внимание, что * Array.prototype.indexOf() * не реализован в IE 8 и старше и потребует дополнительного фрагмента, определяющего этот метод. Также обратите внимание, что ваши списки являются статическими. Вы можете использовать * document.links *, чтобы получить динамическую коллекцию элементов * A * и * AREA * на странице. –
@ Andy E благодарит за информацию. Я считаю само собой разумеющимся, что реализация indexOf везде. В последнее время я использую jQuery, и я полностью расставил document.links. – Gabriel