#javascript #html #tags
#javascript #HTML #Теги
Вопрос:
Ребята, у меня есть строка html, как показано ниже;
<html>
<head><title></title></head>
<body>i wanna remove <span name="Note">this</span> tag</body>
</html>
я использую этот код javascript:
NSString *str = @"function f(){
var nodes = document.getElementsByName('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);
}
}
}f();";
[UIWebView stringByEvaluatingJavaScriptFromString:str];
результат :
<html>
<head><title></title></head>
<body>i wanna remove tag</body>
</html>
как я могу удалить только тег?
Ответ №1:
Вы могли бы попробовать:
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();";
Редактировать:
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 amp;amp; (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();";
Комментарии:
1. это будет работать в e-reader для записи примечания к выделенному тексту .. и, если я не смогу удалить добавленный мной тег, будет много
<span>
тегов.. мне нужно больше, чтобы полностью удалить известный тег2. Если вам действительно нужно удалить теги, у меня будет новая версия кода. Вы могли бы взглянуть, если вам это нужно.
3. Здесь я пытаюсь создать выделение текста и извлекать выделенный текст, когда когда-либо закрываю и открываю книгу. Я буквально выделил текст, но я не знаю, как его сохранить и извлечь. Не могли бы вы мне помочь, пожалуйста