Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Замена символов в тексте нажатием на кнопку (https://javascript.ru/forum/dom-window/6449-zamena-simvolov-v-tekste-nazhatiem-na-knopku.html)

p-mail 28.11.2009 02:26

Замена символов в тексте нажатием на кнопку
 
Задача следующая: на странице имеется большой текст с проставленными ударениями ( & # 7 6 9 ; ). Нужно нажатием на кнопку убирать/снова расставлять их. Как это правильнее и компактнее сделать (и чтобы кулер не выл)?

Gvozd 28.11.2009 03:30

например перебрать все текстовые ноды, и заменить ударения на какой-то неотображаемый символ(\06 кажется бипу соответсвует), и обратно?

p-mail 28.11.2009 15:36

Ну наверно и подстановка пустого значения ( changeSimvol = "" ) подойдет. Вопрос касался технической реализации, каким образом это лучше осуществить. Чтобы не писать на месте каждого ударения -
ударе<script>document.write(changeSimvol)</script>ние

Gvozd 28.11.2009 17:41

Цитата:

Сообщение от p-mail
Ну наверно и подстановка пустого значения ( changeSimvol = "" ) подойдет

как ты их собираешься после этого возвращать обратно?
Цитата:

Сообщение от p-mail
document.write(changeSimvol)

это тут никак не подойдет(если ты хочешь сделать без перезагрузки страницы)
го учить DOM и Регулярные выражения, и думать над предложенным мною алгоритмом

subzey 29.11.2009 02:13

Вот один вариант. Но не скрипта, а разметки. :)
<style type="text/css">
	.grp-noaccents .typ-accent {
		display: none
	}
</style>

<body class="grp-noaccents">
...
<p>На дворе<span class="typ-accent">&#769;</span> трава<span class="typ-accent">&#769;</span>, на траве<span class="typ-accent">&#769;</span> дрова<span class="typ-accent">&#769;</span>.</p>
...
</body>


Как Вы, наверное, догадываетесь, достаточно добавить/удалить класс "grp-noaccents" любому родителю, чтобы скрыть/показать ударения.

Плюсы: экстремально шустрая в работе и несложная в изготовлении методика.
Минусы: при копировании текста из браузера ударения будут всегда; если css не подгрузится, ударения будут показываться всегда.


Часовой пояс GMT +3, время: 01:34.