/ / Намиране на DOM елемент с част от атрибут с vanilla Javascript - javascript, html, масиви, dom

Намиране на DOM елемент с част от атрибута с ванилия Javascript - javascript, html, масиви, дом

Да кажем, че имам уебсайт и искам да го използвамскрипт, който обикаля през своите 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.

цигулка