Я пытаюсь удалить все атрибуты, кроме определенных белых списков из длинной строки html. Я использую DOM для его анализа.Удалить атрибуты из html string - error with removeAttributeNode
Я знаю, что есть много других вопросов, но мой вопрос касается ошибки, которую я получаю с выполнением removeAttributeNode
в моем коде ниже.
var div = document.createElement('div');
div.innerHTML = '<p class=\"p\">text here</p> <div id=\"divId\"></div>';
var elements = div.getElementsByTagName('*');
var whitelist = ["src", "width", "height"];
for (var i = 0; i < elements.length; i++) {
if (elements[i].attributes.length !== 0) {
var attr = elements[i].attributes;
for (var j = 0; j < attr.length; j--) {
var attrName = attr[j].name;
for (var k = 0; k < whitelist.length; k++) {
if (attrName !== whitelist[k])
elements[i].removeAttributeNode(attr);
}
}
}
}
Но, я получаю следующее сообщение об ошибке: Failed to execute 'removeAttributeNode ' on Element: the 1st argument provided is either null, or an invalid Attr object.
Но я проверил с заявлениями консольных и элементы [я] не равно нулю. Например, элементы [0] = <p class="p">
. Как мне получить removeAttributeNode
? Спасибо за помощь!
'removeAttributeNode (атр)', вероятно, следует просто 'removeAttribute (attrName)' – dandavis
removeAttributeNode принимает AttributeNode в качестве параметра. Element.attributes - это только именованная коллекция узлов атрибутов, но не сам узел. Попробуйте getAttributeNode (attrs [i] .name), чтобы перебрать узлы, а затем удалить их. –
http://plnkr.co/edit/ckAmq7zuXxShlNTgKoUC?p=preview – dfsq