Выделение Range
Здравствуйте.
Реализация выделения отдельных слов текста предлагает оборачивание в тег span: rng.surroundContents(span); При удалении: removeChild(); или замене replaceChild(); span удаляется со своим содержимым. Как элегантно, не городя лишнего удалить тег span? |
display: none; |
Цитата:
|
Цитата:
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>ГГ</title>
<style>
.container>span {
color: red;
}
</style>
</head>
<body>
<div class="container">
Этот текст
<span>как всегда</span>
ни о чём
</div>
<button>Жми</button>
<script>
document.querySelector('button').onclick = function(){
var a = document.querySelector('.container>span');
var b = getComputedStyle(a).display;
(b == 'none') ? a.style.display = 'inline' : a.style.display = 'none';
}
</script>
</body>
</html>
|
novitocnaforume,
вытащить циклом каждый |
Цитата:
Я привел это как факт :) А вопрос: Как элегантно, не городя лишнего удалить тег span? Выделенный текст заключен в span его удалять ненужно. |
Цитата:
|
novitocnaforume,
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>ГГ</title>
<style>
.container>span {
color: red;
}
</style>
</head>
<body>
<div class="container">
Этот текст
<span>как всегда</span>
ни о <span>чём</span>
</div>
<button>Жми</button>
<script>
document.querySelector("button").onclick = function() {
[].forEach.call(document.querySelectorAll(".container>span"), function(a) {
for (var b = a.parentNode, c; c = a.childNodes[0];) b.insertBefore(c, a);
b.removeChild(a)
})
};
</script>
</body>
</html>
|
Цитата:
|
Цитата:
До удаления span слово подсвечивается без проблем в любом, месте текста, т. е. создаваля объект Range, граничные точки setStart(); и setEnd(); После удаления span как то влияет на Range: текст в браузере, и по Firebug не сокращается, но в коде уменьшается на обертку span: alert(root.nodeValue); он как метка по которой уменьшаются слова в тексте. Думал причина в области видимости переменных: выносил запрос за пределы функции. Похоже решение связано с Range. |
novitocnaforume,
не осилил |
Цитата:
|
|
Цитата:
|
| Часовой пояс GMT +3, время: 19:07. |