Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Столкнулся с проблемой. Не знаю как решить! Нужна помощь (https://javascript.ru/forum/dom-window/71405-stolknulsya-s-problemojj-ne-znayu-kak-reshit-nuzhna-pomoshh.html)

espltd 16.11.2017 09:57

Столкнулся с проблемой. Не знаю как решить! Нужна помощь
 
Всем доброго дня. Столкнулся с проблемой и не знаю как решить. Есть сайт с каталогом товаров (не интернет магазин), а просто сайт-каталог. У каждого товара есть описание, которое когда-то кто-то из менеджеров забивал через визуальный редактор. Забито как попало, везде разный шрифт, отступы и т.д. У одного товара шрифт один, у другого другой, размерность разная и пр.

Заказчик поставил задачку привести все к общему виду. Проблема в чем, на css стили блок(в котором текст) не хочет реагировать, потому, что веб редактор всегда в коде прописывает заглавный стиль, например <p style="color:#000; font-size:15px"> какой-то текст </p> и он его видит как основной.

и мне эти стили не поддаются изменению. Вычищать 1500 товаров ручками не хочу. Не знаете как быть в такой ситуации?

рони 16.11.2017 10:00

espltd,
Цитата:

elem.removeAttribute(name) – удаляет атрибут

espltd 16.11.2017 10:01

не вкуриваю пока, можно подробнее?

espltd 16.11.2017 10:03

я правильно понимаю, я могу таким образом весь атрибут style="бла бла бла" удалить с тегов p ?

laimas 16.11.2017 10:03

espltd,
на стороне сервера, один раз пройтись рег. выражением по страницам если статика или по данным, удалив подобный хлам, или заменив классами. А далее уже CSS свой.

espltd 16.11.2017 10:05

Цитата:

Сообщение от laimas (Сообщение 470296)
espltd,
на стороне сервера, один раз пройтись рег. выражением по страницам если статика или по данным, удалив подобный хлам, или заменив классами. А далее уже CSS свой.

Не статика, у каждого товара описание из базы подгружается. Вот мне и надо очистить всю лишнюю атрибуху

рони 16.11.2017 10:05

espltd,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  p{
      color:#FF0000; font-size:55px
  }

  </style>

  <script>
  window.addEventListener('DOMContentLoaded', function() {
  [].forEach.call( document.querySelectorAll('p'), function(el) {
           el.removeAttribute('style');
    });

    });

  </script>
</head>

<body>
<p style="color:#000; font-size:15px"> какой-то текст </p>
<p style="color:#000; font-size:15px"> какой-то текст </p>
</body>
</html>

laimas 16.11.2017 10:06

Цитата:

Сообщение от espltd
у каждого товара описание из базы подгружается

Тем более бог велел из базы весь такой хлам выкинуть. Еще и лучше, не надо будет с файлами возиться.

Nexus 16.11.2017 10:07

Цитата:

Сообщение от espltd
Не статика, у каждого товара описание из базы подгружается. Вот мне и надо очистить всю лишнюю атрибуху

Будет варварством чистить стили на стороне клиента, в этом случае.

рони 16.11.2017 10:08

espltd,
прислушайтесь к laimas, и сделайте всё на сервере

espltd 16.11.2017 10:10

Посмотрим, что больше подойдет, но в любом случае спасибо за советы.

laimas 16.11.2017 10:13

Цитата:

Сообщение от espltd
Посмотрим, что больше подойдет

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

join 16.11.2017 10:14

в базе скорее всего нет тегов с этими стилями. надо php файлы править. искать и править. Это же не 1500 статичных страниц. а 1-2 файла всего.

laimas 16.11.2017 10:17

Цитата:

Сообщение от join
в базе скорее всего нет тегов с этими стилями.

С чего это вдруг? Если это визуальный редактор, то как раз он таким образом и поступает, а РНР не царское дело такой хренью заниматься. )

join 16.11.2017 10:20

laimas,
Шаблон например, или виджет с настраиваемыми параграфами, обычно там может быть такое очень вероятно. Почему нет?

laimas 16.11.2017 10:24

Цитата:

Сообщение от join
Шаблон например, или виджет с настраиваемыми параграфами

Какой шаблон если речь идет о том, что каждый творит сам как ему вздумается, перечитайте суть проблемы. Если бы шаблон, то его ручками один раз в редакторе проще изменить.

join 16.11.2017 10:32

laimas,
Да, точно. В любом случае, автор накурится сегодня по полной )

espltd 16.11.2017 10:34

Ребят, забыл спросить, есть ли возможность проставить enter автоматически. Например в некоторых местах его нет, и сделать, чтобы например где его нет, он проставлялся. Типа имитация enter-а. Вот например после слова сфера использования его нет.

Сфера использования:
Данные станки широко используются в деревообрабатывающей промышленности, мебельном производстве, для обработки деталей при строительстве и декорировании. Станок используется для обработки дерева, алюминия и других схожих материалов.

laimas 16.11.2017 10:37

Перевод строки для HTML ничего не значит, если только не заменять его на лету на BR.

espltd 16.11.2017 10:39

а как на лету поменять? Это как-то в цикле должно быть?

laimas 16.11.2017 10:41

Зачем цикл, при выводе данных из базы на страницу применить к строке функцию nl2br, если конечно серверный язык РНР.

espltd 16.11.2017 10:48

наверное надо было пояснить. Не стал создавать отдельную тему т.к. задание похожее. Есть огромная страница, ну очень огромная, у которой статические текст, пример я приводил. Мне как-то нужно просто отступы добавить где их нет., но не руками. А то там скорее кони двинешь чем обработаешь. Есть выход?

laimas 16.11.2017 11:03

Цитата:

Сообщение от espltd
Мне как-то нужно просто отступы добавить где их нет.

А как дать понять программе где нужны отступы? Если это условие можно описать/задать, то можно это сделать один раз программно, иначе нет.

Dilettante_Pro 16.11.2017 11:16

Для приведенного случая
<div>Сфера использования:Данные станки широко используются в деревообрабатывающей промышленности, мебельном производстве, для обработки деталей при строительстве и декорировании. Станок используется для обработки дерева, алюминия и других схожих материалов.
</div>
<script>
   var cont = document.querySelector('div');
   cont.innerHTML= cont.innerText.replace(":",":<br>");  
</script>

espltd 16.11.2017 11:58

А интересно, есть ли возможность отследить без использования : ? Имеется ввиду можно ли отследить просто перенос строки или это не возможно? Заранее, спасибо за ответ

Dilettante_Pro 16.11.2017 12:23

Цитата:

Сообщение от espltd
можно ли отследить просто перенос строки

<div>Сфера использования:
Данные станки широко используются в деревообрабатывающей промышленности, мебельном производстве, для обработки деталей при строительстве и декорировании. 
Станок используется для обработки дерева, алюминия и других схожих материалов.
</div>
<button id= "inbr">обработать</button>
<script>
 inbr.onclick = function() {
     var cont = document.querySelector('div');
    cont.innerHTML= cont.innerHTML.replace(/\n/g,"<br>"); 
} 
</script>

espltd 16.11.2017 12:32

Спасибо всем за помощь!


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