Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.03.2018, 16:42
Аспирант
Отправить личное сообщение для Tipylja Посмотреть профиль Найти все сообщения от Tipylja
 
Регистрация: 17.04.2017
Сообщений: 72

Поиск и обвертка для цифр в таблице
Здравствуйте. Подскажите пожалуйста. Есть множество карточек товаров, в них есть таблица, в которой есть значения. Допустим:
<table class="table product__table">
                            <tr class="table__row">
                                <td class="table__cell">Мощность бензинового двигателя</td>
                                <td class="table__cell">2800 W или 3,9 л.с.</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Обороты</td>
                                <td class="table__cell">8800 в мин.</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Шина</td>
                                <td class="table__cell">45 см (450 мм)</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Цепной шаг</td>
                                <td class="table__cell">0.325 дюйма</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем двигателя внутреннего сгорания</td>
                                <td class="table__cell">52 см³</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем бака для топлива</td>
                                <td class="table__cell">680 мл</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем бака для масла</td>
                                <td class="table__cell">350 мл</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Масляный насос</td>
                                <td class="table__cell">Автомат</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Рекомендованное топливо</td>
                                <td class="table__cell">Бензин АИ-92</td>
                            </tr>
                            


                        </table>


Необходимо все цифры обвернуть в span с классом, для декорирования. Не подскажите как это можно сделать?
А совсем бы хорошо было если бы так же оборачивались цифр и примыкающие буквы, если такие есть, что имею ввиду - допустим есть значение "Бензин АИ-92", то вот "АИ-92" тоже хотелось бы обвернуть, то есть грубо говоря, слово, в котором есть цифры. Понимаю, что такое лучше повесить на пхп, нежели грузить браузер клиенту, но все же хотелось бы временно решить это на js или jq
Ответить с цитированием
  #2 (permalink)  
Старый 13.03.2018, 17:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Tipylja,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .table__cell .red{
      background-color: #FF0000;
      color: #FFFFFF;
    }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
$(".table__cell").html(function(i, html) {
   return  html.replace(/([^\s()]*\d[^\s()]*)/g, "<span class='red'>$1</span>")
})
});
  </script>
</head>

<body>
<table class="table product__table">
                            <tr class="table__row">
                                <td class="table__cell">Мощность бензинового двигателя</td>
                                <td class="table__cell">2800 W или 3,9 л.с.</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Обороты</td>
                                <td class="table__cell">8800 в мин.</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Шина</td>
                                <td class="table__cell">45 см (450 мм)</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Цепной шаг</td>
                                <td class="table__cell">0.325 дюйма</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем двигателя внутреннего сгорания</td>
                                <td class="table__cell">52 см³</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем бака для топлива</td>
                                <td class="table__cell">680 мл</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем бака для масла</td>
                                <td class="table__cell">350 мл</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Масляный насос</td>
                                <td class="table__cell">Автомат</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Рекомендованное топливо</td>
                                <td class="table__cell">Бензин АИ-92</td>
                            </tr>



                        </table>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2018, 17:18
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Не додумался до регулярки рони, поэтому породил такой код:
https://jsfiddle.net/rhqap58q/

<table class="table product__table">
                            <tr class="table__row">
                                <td class="table__cell">Мощность бензинового двигателя</td>
                                <td class="table__cell">2800 W или 3,9 л.с.</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Обороты</td>
                                <td class="table__cell">8800 в мин.</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Шина</td>
                                <td class="table__cell">45 см (450 мм)</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Цепной шаг</td>
                                <td class="table__cell">0.325 дюйма</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем двигателя внутреннего сгорания</td>
                                <td class="table__cell">52 см³</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем бака для топлива</td>
                                <td class="table__cell">680 мл</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Объем бака для масла</td>
                                <td class="table__cell">350 мл</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Масляный насос</td>
                                <td class="table__cell">Автомат</td>
                            </tr>
                            <tr class="table__row">
                                <td class="table__cell">Рекомендованное топливо</td>
                                <td class="table__cell">Бензин АИ-92</td>
                            </tr>
                            


                        </table>
<script>
[].forEach.call(document.querySelectorAll('.table__cell'),function(cell){
	var html=cell.innerHTML;
	
	cell.textContent.split(/\s+/g).map(function(word){
		return word.replace(/[^\-a-zа-яё\.\,\d]+?/gi,'');
	}).filter(function(word){
		return word.replace(/\D+?/g,'').length;
	}).forEach(function(phrase){
		html=html.replace(phrase,'<span style="color:red;">'+phrase+'</span>');
	});
	
	cell.innerHTML=html;
});
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2018, 17:54
Аспирант
Отправить личное сообщение для Tipylja Посмотреть профиль Найти все сообщения от Tipylja
 
Регистрация: 17.04.2017
Сообщений: 72

Как всегда спасибо!!Плюсы уже ставил, больше не разрешает=)))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Возможно ли использование "горячих" клавиш для навигации по таблице? sergeos jQuery 9 16.07.2010 13:43
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Для чего ограничен поиск? ZoNT Сайт Javascript.ru 4 01.10.2008 15:55