的所有屬性和值使用純Javascript,如何過濾目標元素內的所有屬性和屬性值?過濾屬性
下面是我試圖實現我的目標的示例代碼。但是我不知道如何獲取所有屬性名稱,然後獲取屬性名稱的值來過濾它。如果屬性名稱未列出,我想刪除該屬性。如果允許,我想只保留允許的值。
(function() {
//array allowed attr and allowed value of attr
/*
var allowedAttrValue = {};
allowedAttrValue['class'] = 'dont_remove'; // I want to use dont_remove class
allowedAttrValue['class'] = 'i_want_this_class'; // I want to use i_want_this_class class
allowedAttrValue['data-dont-remove='] = 'whatever'; //what ever value in this attribute are allowed.
// 1. I need to remove all attribute not listed
// 2. I want to filter value of allowed attribute. if value not listed I want to keep only allowed attribute (especially class; have multiple value separatedby space).
*/
var
editor = document.getElementById("post-editor"),
editorParagraph = editor.querySelectorAll("*");
for (i = 0; i < editorParagraph.length; ++i) {
elem = editorParagraph[i];
if (elem.attributes) {
//console.log(elem.attributes); //return namedNodeMap object. how to get attribute name and attribute value?
var ii;
for (ii = 0; ii < elem.attributes.length; ++ii) {
var elemAttr = elem.attributes[ii];
console.log(elemAttr); //retrun directly data-attr="haha" data-wtf="remove-me" class="hehe" and all.
}
}
}
})(); //end
<div id="post-editor" class="preview">
<div data-attr="haha" data-wtf="remove me">
bla bla
</div>
<div class="hehe dont_remove" data-something="haha">
bla bla
</div>
<div data-dont-remove="value" data-randomly="haha">
bla bla
</div>
<div class="this_class_not_listed i_want_this_class" data-remove-all="haha">
bla bla
</div>
<div data-data="haha">
bla bla
</div>
</div>
奇怪,如果你想要一個純JS的解決方案,您標記'jQuery'。 –
對不起,這是因爲有時候Jquery用戶也可以提供幫助,因爲他們熟悉Javascript,大多數relevan –
這不是標籤系統的作用,它是幫助標記一個特定問題。 –