Javascript.RU

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

Подсветить min и max значение в таблице
Здравствуйте.

Помогите, пожалуйста, с кодом js.
Необходимо в каждой строке подсветить одним цветом минимальную цифру и другим цветом максимальную.

Заранее благодарен.
Код:
<table>
            <tr>
                <td>11</td>
                <td>22</td>
                <td>65</td>
                <td>14</td>
                <td>35</td>
            </tr>
            <tr>
                <td>39</td>
                <td>12</td>
                <td>84</td>
                <td>45</td>
                <td>38</td>
            </tr>
            <tr>
                <td>37</td>
                <td>39</td>
                <td>52</td>
                <td>38</td>
                <td>24</td>
            </tr>
        </table>
Ответить с цитированием
  #2 (permalink)  
Старый 18.10.2016, 12:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

den1a,
циклом обойти все ячеки и сохранить индексы ячеек с max и min, потом ячейкам с этими индексами поменять цвет. всё. начните хотя бы ...

Последний раз редактировалось рони, 18.10.2016 в 12:31.
Ответить с цитированием
  #3 (permalink)  
Старый 18.10.2016, 12:42
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

<style>.min {
  color: red;
}

.max {
  color: green;
}
</style>
<table>
  <tr>
    <td>11</td>
    <td>22</td>
    <td>65</td>
    <td>14</td>
    <td>35</td>
  </tr>
  <tr>
    <td>39</td>
    <td>12</td>
    <td>84</td>
    <td>45</td>
    <td>38</td>
  </tr>
  <tr>
    <td>37</td>
    <td>39</td>
    <td>52</td>
    <td>38</td>
    <td>24</td>
  </tr>
</table>
<script>
HTMLCollection.prototype.forEach = NodeList.prototype.forEach = Array.prototype.forEach;
var min, max, val;
var allTd = document.querySelectorAll('td');
allTd.forEach(function(el) {
  val = +el.innerHTML;
  if (!min) {
    max = val;
    min = val;
  } else {
    if (val > max) max = val;
    if (val < min) min = val;
  }
});
allTd.forEach(function(el) {
  val = +el.innerHTML;
  if (val === min) el.className = 'min';
  if (val === max) el.className = 'max';
});
</script>

в 2 прохода
Ответить с цитированием
  #4 (permalink)  
Старый 18.10.2016, 12:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Poznakomlus,
а почему не 1?
Ответить с цитированием
  #5 (permalink)  
Старый 18.10.2016, 12:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072


<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
    var a = [].slice.call(document.querySelectorAll("td"), 0);
    a.sort(function(a, b) {
        return b.textContent - a.textContent
    });
    a[0].style.backgroundColor = "#FF0000";
    a.slice(-1)[0].style.backgroundColor = "#008000"
});
  </script>
</head>

<body>
<table>
            <tr>
                <td>11</td>
                <td>22</td>
                <td>65</td>
                <td>14</td>
                <td>35</td>
            </tr>
            <tr>
                <td>39</td>
                <td>12</td>
                <td>84</td>
                <td>45</td>
                <td>38</td>
            </tr>
            <tr>
                <td>37</td>
                <td>39</td>
                <td>52</td>
                <td>38</td>
                <td>24</td>
            </tr>
        </table>

</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 18.10.2016, 12:53
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от рони
а почему не 1?
писал на скорую руку о чем и предупредил. думаю ТС подправит код дя одного прохода
Ответить с цитированием
  #7 (permalink)  
Старый 18.10.2016, 13:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

вариант с 1 циклом
<!DOCTYPE html>

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

  </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
    for (var d = document.querySelectorAll("td"), c = 0; c < d.length; c++) {
        var b = d[c],
            a = document.querySelector(".max") || b;
            +a.textContent < +b.textContent && (a.classList.remove("max"), a = b);
            a.classList.add("max");
            a = document.querySelector(".min") || b;
            +a.textContent > +b.textContent && (a.classList.remove("min"), a = b);
            a.classList.add("min")
    }
});
  </script>
</head>

<body>
<table>
            <tr>
                <td>11</td>
                <td>22</td>
                <td>65</td>
                <td>14</td>
                <td>35</td>
            </tr>
            <tr>
                <td>39</td>
                <td>12</td>
                <td>84</td>
                <td>45</td>
                <td>38</td>
            </tr>
            <tr>
                <td>37</td>
                <td>39</td>
                <td>52</td>
                <td>38</td>
                <td>24</td>
            </tr>
        </table>

</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 18.10.2016, 13:22
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

еще вариант в 1 проход
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
</head>

<body>
<table>
            <tr>
                <td>11</td>
                <td>22</td>
                <td>65</td>
                <td>14</td>
                <td>35</td>
            </tr>
            <tr>
                <td>39</td>
                <td>12</td>
                <td>84</td>
                <td>45</td>
                <td>38</td>
            </tr>
            <tr>
                <td>37</td>
                <td>39</td>
                <td>52</td>
                <td>38</td>
                <td>24</td>
            </tr>
        </table>
  <script>
window.onload = function() {
  var allTd = document.querySelectorAll("td"),
    min,
    max;
  for (var i = 0, el; i < allTd.length; i += 1) {
    el = allTd[i];
    val = +el.innerHTML; //IE8
    if (!min) {
      max = {
        val: val,
        idx: i
      };
     min = {
        val: val,
        idx: i
      };
    } else {
      if (val > max.val) {
        max.val = val;
        max.idx = i;
      }
      if (val < min.val) {
        min.val = val;
        min.idx = i;
      }
    }
  }
  allTd[min.idx].style.backgroundColor = "#FF0000";
  allTd[max.idx].style.backgroundColor = "#008000"
};</script>
</body>
</html>

Последний раз редактировалось Vlasenko Fedor, 18.10.2016 в 13:39.
Ответить с цитированием
  #9 (permalink)  
Старый 18.10.2016, 15:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от den1a
Необходимо в каждой строке подсветить одним цветом минимальную цифру и другим цветом максимальную.
Подкину свои 5коп...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.min {
	color: red;
}
.max {
	color: blue;
}
</style>
<script type='text/javascript'>
window.onload=function(){
	var o=document.getElementsByTagName('table')[0];
	var html,arr,min,max,reg;
	for (var i=0; i<o.rows.length; i++) {
		html=o.rows[i].innerHTML;
		arr=html.match(/\d+/g);
		arr=arr.sort();
		min=arr[0];
		max=arr[arr.length-1];
		reg=new RegExp('<td>('+min+'</td>)','gim');
		html=html.replace(reg,'<td class="min">$1');
		reg=new RegExp('<td>('+max+'</td>)','gim');
		html=html.replace(reg,'<td class="max">$1');
		o.rows[i].innerHTML=html;
	};
};
</script>
</head>
<body>
<table>
	<tr>
		<td>11</td>
		<td>22</td>
		<td>65</td>
		<td>14</td>
		<td>35</td>
	</tr>
	<tr>
		<td>39</td>
		<td>12</td>
		<td>84</td>
		<td>45</td>
		<td>38</td>
	</tr>
	<tr>
		<td>37</td>
		<td>39</td>
		<td>52</td>
		<td>38</td>
		<td>24</td>
	</tr>
</table>
</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 18.10.2016, 15:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

ksa,
оно что подсвечивает?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с выпадающим списком JavaScript ursus102 Общие вопросы Javascript 0 16.01.2016 19:30
Min max значение в массиве чисел Элиас Общие вопросы Javascript 2 07.11.2015 10:43
Случайное значение без повторений в диапазоне от min до max ponyspy Общие вопросы Javascript 16 26.03.2014 20:17
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
как правильно задавать значение min, max в Slider UI Серёжа Шевченко Общие вопросы Javascript 1 28.11.2012 17:15