Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.12.2019, 23:37
Аспирант
Отправить личное сообщение для svileff Посмотреть профиль Найти все сообщения от svileff
 
Регистрация: 25.11.2019
Сообщений: 39

Как убрать текст из строки
<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>','');
Не выходит, сумма всегда меняется нужно как то по другому. Подскажите пожалуйста.

Последний раз редактировалось svileff, 10.12.2019 в 01:34.
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2019, 07:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от 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>
Ответить с цитированием
  #3 (permalink)  
Старый 10.12.2019, 08:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

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

<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>
Ответить с цитированием
  #4 (permalink)  
Старый 10.12.2019, 17:18
Аспирант
Отправить личное сообщение для svileff Посмотреть профиль Найти все сообщения от svileff
 
Регистрация: 25.11.2019
Сообщений: 39

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

<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, только Класс.
Ответить с цитированием
  #5 (permalink)  
Старый 11.12.2019, 07:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от svileff
Нету ID, только Класс
Это не важно... Определяй элемент через класс, только правильно.
Сообщение от svileff
но он не удаляет последствию строку
Тут не понял...
Если тебе нужно удалить еще одну текстовую ноду - удали еще раз.

Выше есть пример с replace()...
Ответить с цитированием
  #6 (permalink)  
Старый 11.12.2019, 13:30
Аспирант
Отправить личное сообщение для svileff Посмотреть профиль Найти все сообщения от svileff
 
Регистрация: 25.11.2019
Сообщений: 39

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


Удаление нет!
Ответить с цитированием
  #7 (permalink)  
Старый 11.12.2019, 14:24
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от svileff Посмотреть сообщение
<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>/,'');
Ответить с цитированием
  #8 (permalink)  
Старый 11.12.2019, 14:58
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

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

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

Нет такого метода getElementByСlass()...
Есть getElementsByСlass(). И он возвращает целую коллекцию элементов. Т.ч. обращаться к ним нужно как к элементам массива.
var slot=ol[0].innerHTML;
Ответить с цитированием
  #9 (permalink)  
Старый 11.12.2019, 15:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от jaroslav.tavgen
text.replace(/Сумма со скидкой: .*<br>/,'');
При составлении регулярных выражений считается хорошим тоном (или умением) делать их как можно меньшей длины...
Сравни свой вариант и мой.
Ответить с цитированием
  #10 (permalink)  
Старый 11.12.2019, 15:28
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

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

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

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

Последний раз редактировалось jaroslav.tavgen, 11.12.2019 в 15:36.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как убрать или заменить текст undefined Numbovskij Общие вопросы Javascript 3 11.09.2017 10:43
Как выделить убрать выбранный текст с динамическими полями prog77 jQuery 3 19.07.2017 21:56
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
проблема со scroll Chrome Элементы интерфейса 2 21.10.2013 14:46
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44