2017-10-05 134 views
1

假設我有一個網站,並且想要使用循環其DOM元素的腳本並指出這些元素的屬性包含指定文本的一部分。我設法創建了一個簡單的循環來查找DOM元素的每個所需屬性並從中創建數組。現在,我想將我的數組屬性值與它所屬的DOM元素配對,並且還能夠找出與數組元素(屬性)和DOM元素匹配的指定部分文本。用香草的屬性找到DOM元素的一部分Javascript

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

現在我要配對的DOM元素我的數組屬性值,它 屬於,也能找出文本中指定的部分是 數組元素(屬性)和DOM元素相匹配。

爲什麼不乾脆讓只有那些匹配使用元素包含選擇

var getAll = document.querySelectorAll("[href*='text-to-be-matched']"); 

這是一個NodeList,你可以用迭代for循環和索引什麼的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

這太棒了。非常感謝! – panxpiotr

0

你想過濾一些文本的href屬性?

您可以使用.indexOf(),我沒有看到原因。

或者你可以在開始時改進選擇器(但已經提出)。

這裏是顯示1行代碼添加到您的小提琴,以過濾一些出現在href中的子字符串。

fiddle