Вы можете попробовать:
NSString *str = @"function f(){
var doc = document;
var nodes = doc.getElementsByClassName('Note');
alert(nodes.length); // it returns node count correctly
for(var i = nodes.length - 1;i >= 0;i--){
var node = nodes[i];
if (node){
//node.parentNode.removeChild(node);
node.parentNode.replaceChild(doc.createTextNode(node.innerHTML), node);
}
}
}f();";
но это приведет к странным результатам, если вы получили вложенные теги, такие как <span class="Note">foo<span>bar</span></span>
, если достаточно удалить класс, предположите, что вы могли бы сделать что-то вроде этого:
NSString *str = @"function f(){
var doc = document;
var nodes = doc.getElementsByClassName('Note');
alert(nodes.length); // it returns node count correctly
for(var i = nodes.length - 1;i >= 0;i--){
var node = nodes[i];
if (node){
//node.parentNode.removeChild(node);
node.className = '';
}
}
}f();";
Edit:
NSString *str = @"function f(){
var doc = document;
var aux = doc.createElement('span');
//alert(nodes.length); // it returns node count correctly
for(var nodes = doc.getElementsByClassName('Note'); nodes && (nodes.length > 0); doc.getElementsByClassName('Note')){
var node = nodes[0];
if (node){
aux.innerHTML = node.innerHTML;
for (var el = aux.firstChild, next = el.nextSibling; el; el = next, next = next ? next.nextSibling : null){
var tmp = node.parentNode.insertBefore(el, node);
}
node.parentNode.removeChild(node);
}
}
}f();";