Да кажем, че имам уебсайт и искам да го използвамскрипт, който обикаля през своите DOM елементи и посочва тези елементи, които атрибутът съдържа част от определен текст. Успях да създам обикновен цикъл, който намира всеки желан атрибут на DOM елемент и създава масив от него. Сега искам да сдвоя стойността на атрибута на масива си с DOM елемент, към който принадлежи, и също така да мога да открия определена част от текста който съвпада с елемента масив (атрибут) и DOM елемента.
var getAll = document.getElementsByTagName("*");
var myArray = [];
for (var i=0; i<getAll.length; i++) {
getHref = getAll[i].getAttribute("href");
if (getHref !== null) {
myArray.push(getHref);
}
}
Нямам представа как да свържа атрибутите си с DOMелементи. Опитах се да използвам indexOf (""), за да намеря част от текста, но той не работи, тъй като търси пълни низове в масива. Някой би ли бил толкова мил и да ми помогне? Не искам да използвам никакви рамки.
Отговори:
0 за отговор № 1Сега искам да сдвоя стойността на атрибута на масива си с DOM елемент, който го принадлежи и също така да може да открие определена част от текста, който съвпада с елемента масив (атрибут) и елемента DOM.
Защо просто да не получите само тези елементи, които съвпадат с помощта на съдържа селектор
var getAll = document.querySelectorAll("[href*="text-to-be-matched"]");
Това е NodeList
които можете да повторите за цикъл и индексирайте DOM елементите с това, което сте намерили.
var attributeValToDOMMap = {};
getAll.forEach( function( element ){
var hrefVal = element.getAttribute( "href" );
attributeValToDOMMap[ hrefVal ] = attributeValToDOMMap[ hrefVal ] || []; //in case one href value is common with multiple DOM elements
attributeValToDOMMap[ hrefVal ].push( element );
});
0 за отговор № 2
Искате ли да филтрирате href атрибут по някакъв текст?
Можеш да използваш .indexOf()
, Не виждам причина защо да не.
Или можете да подобрите своя селектор в началото (но това вече е предложено).
Тук е скриптът, показващ 1 ред код, добавен към вашия, за да се филтрира върху някакъв подниз, който се появява в href.