Javascript.RU

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

Изменить размер div от значения в таблице
Здравствуйте!
Есть простая таблица, в ячейках которой есть данные от 0.01 до 1.00.
<table class="ratio-table">
  <tr>
    <td data-id="1">1</td>
    <td data-id="2">0.5</td>
  </tr>
</table>


Чуть ниже которой есть несколько блоков, имеющие высоту в % от родителя.
<div class="container" style="width: 100%; height: 300px;" >
   <div class="item" data-id="1" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
   <div class="item" data-id="2" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
</div>


Скажите пожалуйста, как с помощью javascript изменить высоту блоков "item" в зависимости от значения в ячейках таблицы?
Например, значение в ячейке изменилось с 1.0 до 0.5 - блок уменьшил свою высоту на 50%.

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2018, 19:47
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

document.querySelectorAll('.item').forEach((el, i)=> el.style.height = document.querySelectorAll('.ratio-table td')[i].textContent * 100 +"%");

в тот же обработчик (функцию) которая меняет td
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2018, 19:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

stasnislav,
<!DOCTYPE html>

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

  <script>
window.addEventListener('DOMContentLoaded', function() {
var td = document.querySelectorAll('td[data-id]'), div = document.querySelectorAll('.item');
[].forEach.call(td, function(el,i) {
       var height =  el.textContent * 100 + "%";
       div[i].style.height = height ;
});
    });
  </script>
</head>

<body>
<table class="ratio-table">
  <tr>
    <td data-id="1">1</td>
    <td data-id="2">0.5</td>
  </tr>
</table>
<div class="container" style="width: 100%; height: 300px;" >
  <div class="item" data-id="1" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" data-id="2" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
</div>


</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2018, 19:48
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2018, 19:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

j0hnik,
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2018, 20:00
Новичок на форуме
Отправить личное сообщение для stasnislav Посмотреть профиль Найти все сообщения от stasnislav
 
Регистрация: 30.03.2018
Сообщений: 4

Огромное спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 25.04.2018, 03:08
Новичок на форуме
Отправить личное сообщение для stasnislav Посмотреть профиль Найти все сообщения от stasnislav
 
Регистрация: 30.03.2018
Сообщений: 4

Простите, а как связать конкретную ячейку с конкретным блоком?
У меня четыре столбца таблицы с данными:
<!DOCTYPE html>
 
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
 
  <script>
window.addEventListener('DOMContentLoaded', function() {
var td = document.querySelectorAll('td[data-id]'), div = document.querySelectorAll('.item');
[].forEach.call(td, function(el,i) {
       var height =  el.textContent * 100 + "%";
       div[i].style.height = height ;
});
    });
  </script>
</head>
 
<body>
<table class="ratio-table">
  <tr>
    <td>1</td>
    <td>0.8</td>
  </tr>
  <tr>
    <td>1</td>
    <td>0.6</td>
  </tr>
  <tr>
    <td>1</td>
    <td>0.4</td>
  </tr>
  <tr>
    <td>1</td>
    <td>0.2</td>
  </tr>
</table>
<div class="container" style="width: 100%; height: 300px;" >
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
</div>
 
</body>
</html>

С предложенным "data-id" атрибутом блоки получают значения из таблицы по порядку. То есть, второй div "item" берёт значения из второй по счёту ячейки, а нужно, чтобы брал из первой ячейки второго столбца, которая по счёту третья.
Ответить с цитированием
  #8 (permalink)  
Старый 25.04.2018, 04:01
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<!DOCTYPE html>
 
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
 
  <script>
window.addEventListener('DOMContentLoaded', function() {
var td = [...document.querySelectorAll('td[data-id]')].sort((a,b)=>a.dataset.id-b.dataset.id), div = document.querySelectorAll('.item');
[].forEach.call(td, function(el,i) {
       var height =  el.textContent * 100 + "%";
       div[i].style.height = height ;
});
    });
  </script>
</head>
 
<body>
<table class="ratio-table">
  <tr>
    <td data-id='1'>1</td>
    <td data-id='0'>0.8</td>
  </tr>
  <tr>
    <td data-id='7'>1</td>
    <td data-id='5'>0.6</td>
  </tr>
  <tr>
    <td data-id='2'>1</td>
    <td data-id='6'>0.4</td>
  </tr>
  <tr>
    <td data-id='6'>1</td>
    <td data-id='4'>0.2</td>
  </tr>
</table>
<div class="container" style="width: 100%; height: 300px;" >
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
  <div class="item" style="width: 50px; height: 100%; background: orange; display: inline-block;"></div>
</div>
 
</body>
</html>


data-id -номер блока (отсчет от 0).
Ответить с цитированием
  #9 (permalink)  
Старый 25.04.2018, 04:11
Новичок на форуме
Отправить личное сообщение для stasnislav Посмотреть профиль Найти все сообщения от stasnislav
 
Регистрация: 30.03.2018
Сообщений: 4

Вы меня спасли! Снимаю шляпу!
Ответить с цитированием
  #10 (permalink)  
Старый 25.04.2018, 04:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

не осилил ни вопроса, ни ответа
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить фон div. Имя изображения находится в массиве lainlie Общие вопросы Javascript 1 12.03.2018 21:54
Как вывести свойства div значения которых равно 1? sovsem-nub Events/DOM/Window 8 16.04.2015 13:12
Послать значения из разных div в виде строки Timuchen AJAX и COMET 4 25.08.2014 00:24
как изменить такие значения стилей типа ::-webkit-xxxxxx? cha0s jQuery 1 10.07.2014 13:41
Как сделать размер ячейки в таблице не больше определённого значения? javascript_pupil (X)HTML/CSS 16 18.02.2012 12:52