Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как убрать текст из строки (https://javascript.ru/forum/css-html/79043-kak-ubrat-tekst-iz-stroki.html)

svileff 09.12.2019 23:37

Как убрать текст из строки
 
<div class="t706__cartwin-totalamount-info" style="font-size: 14px; padding-bottom: 10px; font-weight: 400; display: block;">Сумма: 1 975&nbsp;р.<br>Промо код: LOWO500<br>Скидка: 500&nbsp;р.<br>Сумма со скидкой: 1 475&nbsp;р.<br></div>


Нужно убрать Сумма со скидкой: 1 475&nbsp;р.<br> строку.
Пробывал через
text.replace('Сумма со скидкой: 1 475&nbsp;р.<br>','');
Не выходит, сумма всегда меняется нужно как то по другому. Подскажите пожалуйста.

ksa 10.12.2019 07:46

Цитата:

Сообщение от svileff
сумма всегда меняется нужно как то по другому

Тебе нужно убирать последнюю часть
<br>...<br>

Например так...
<div id='test'>Сумма: 1 975&nbsp;р.<br>Промо код: LOWO500<br>Скидка: 500&nbsp;р.<br>Сумма со скидкой: 1 475&nbsp;р.<br></div>
<script type='text/javascript'>
var o=document.getElementById('test');
var txt=o.innerHTML;
txt=txt.replace(/<br>[^<]*?<br>$/,'<br>');
o.innerHTML=txt;
</script>

ksa 10.12.2019 08:04

Или просто удалить две последние текстовые ноды...

<div id='test'>Сумма: 1 975&nbsp;р.<br>Промо код: LOWO500<br>Скидка: 500&nbsp;р.<br>Сумма со скидкой: 1 475&nbsp;р.<br></div>
<script type='text/javascript'>
var o=document.getElementById('test');
o.removeChild(o.lastChild);
o.removeChild(o.lastChild);
</script>

svileff 10.12.2019 17:18

Цитата:

Сообщение от ksa (Сообщение 517213)
Или просто удалить две последние текстовые ноды...

<div id='test'>Сумма: 1 975&nbsp;р.<br>Промо код: LOWO500<br>Скидка: 500&nbsp;р.<br>Сумма со скидкой: 1 475&nbsp;р.<br></div>
<script type='text/javascript'>
var o=document.getElementById('test');
o.removeChild(o.lastChild);
o.removeChild(o.lastChild);
</script>

Да это вариант подошёл бы как некстати но он не удаляет последствию строку. Нету ID, только Класс.

ksa 11.12.2019 07:43

Цитата:

Сообщение от svileff
Нету ID, только Класс

Это не важно... Определяй элемент через класс, только правильно. ;)
Цитата:

Сообщение от svileff
но он не удаляет последствию строку

Тут не понял... :blink:
Если тебе нужно удалить еще одну текстовую ноду - удали еще раз.

Выше есть пример с replace()... ;)

svileff 11.12.2019 13:30

Делаю так
var ol = document.getElementByСlass("t706__cartwin-totalamount-info");
var slot=ol.innerHTML;
slot=slot.replace(/<br>[^<]*?<br>$/,'<br>');
ol.innerHTML=slot;


Удаление нет!

jaroslav.tavgen 11.12.2019 14:24

Цитата:

Сообщение от svileff (Сообщение 517203)
<div class="t706__cartwin-totalamount-info" style="font-size: 14px; padding-bottom: 10px; font-weight: 400; display: block;">Сумма: 1 975&nbsp;р.<br>Промо код: LOWO500<br>Скидка: 500&nbsp;р.<br>Сумма со скидкой: 1 475&nbsp;р.<br></div>


Нужно убрать Сумма со скидкой: 1 475&nbsp;р.<br> строку.
Пробывал через
text.replace('Сумма со скидкой: 1 475&nbsp;р.<br>','');
Не выходит, сумма всегда меняется нужно как то по другому. Подскажите пожалуйста.

text.replace(/Сумма со скидкой: .*<br>/,'');

ksa 11.12.2019 14:58

Цитата:

Сообщение от svileff (Сообщение 517315)
Делаю так
var ol = document.getElementByСlass("t706__cartwin-totalamount-info");
var slot=ol.innerHTML;
slot=slot.replace(/<br>[^<]*?<br>$/,'<br>');
ol.innerHTML=slot;

Удаление нет!

Так ты хоть потестируй свою программу... Хоть какие-то доки по ДОМ-модели документа почитай... Научись смотреть в браузере есть ошибки в твоем скрипте или их нет.
Если ты что-то пишешь английскими буквами это не становится программой. :no:

Нет такого метода getElementByСlass()... :no:
Есть getElementsByСlass(). И он возвращает целую коллекцию элементов. Т.ч. обращаться к ним нужно как к элементам массива.
var slot=ol[0].innerHTML;

ksa 11.12.2019 15:01

Цитата:

Сообщение от jaroslav.tavgen
text.replace(/Сумма со скидкой: .*<br>/,'');

При составлении регулярных выражений считается хорошим тоном (или умением) делать их как можно меньшей длины...
Сравни свой вариант и мой. ;)

jaroslav.tavgen 11.12.2019 15:28

Цитата:

Сообщение от ksa (Сообщение 517322)
При составлении регулярных выражений считается хорошим тоном (или умением) делать их как можно меньшей длины...
Сравни свой вариант и мой. ;)

Твой вариант меняет HTML (и не работает на авторском), а я сделал вариант, который работает с авторским HTML.

Но спасибо, что сказал про хороший тон - я этого не знал!

UPDATE: Блин, что-то уже и мой вариант с ним не работает:) Я предложил вариант, где text - это весь HTML, а не только содержимое тега div.


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