Javascript.RU

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

Несколько счетчиков с разными значениями
Есть несколько вот таких блоков
<div class="col-md-12">
     <div class="card" id="count_one">
          <input type="hidden" id="speed" value="0.0000397938144330" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" id="float" value="10.000067981099106">
                    <div class="media-body">
                         <span  id="Count">10.00009856</span>
                         <span id="Price">0.50</span>
                         <span id="Cash">5.00006288</span>
                    </div>
               </div>
		   	   </div>
     </div>
</div>

<div class="col-md-12">
     <div class="card" id="count_two">
          <input type="hidden" id="speed" value="0.0000000020431799" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" id="float" value="100.00004564566">
                    <div class="media-body">
                         <span  id="Count">100.00009856</span>
                         <span id="Price">10.50</span>
                         <span id="Cash">1050.0004567456</span>
                    </div>
               </div>
		   	   </div>
     </div>
</div>

<div class="col-md-12">
     <div class="card" id="count_three">
          <input type="hidden" id="speed" value="0.0000000159790278" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" id="float" value="1.000456546546">
                    <div class="media-body">
                         <span  id="Count">1.000345345</span>
                         <span id="Price">0.70</span>
                         <span id="Cash">0.700345345</span>
                    </div>
               </div>
		   	   </div>
     </div>
</div>


И так далее 10 блоков и более
как заставить их работать все, работает только первый блок



$(document).ready(function () {
    var renderPrice, renderCount, RenderSum,renderSpeed

    renderPrice = $('#Price');
    renderSpeed = $('#speed').val();
    renderCount = $('#Count');
	test = $('#float');
    RenderSum = $('#Cash');




        setInterval(function () {


				test.val(parseFloat(renderSpeed / 600) + parseFloat(test.val()))
                renderCount.text(parseFloat(test.val()).toFixed(8))
                RenderSum.text(parseFloat(parseFloat(renderCount.text()) * parseFloat(renderPrice.text())).toFixed(8))


        } , 100)

});
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2020, 08:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

madam,
выкинуть все id из кода, заменить на class, и сделать цикл по блокам.
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2020, 08:52
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Начнем с того, что id должен быть уникальным. Нельзя назначать одинаковый id разным элементам.
Можно использовать классы (фиктивно, только для того, что бы иметь возможность найти этот элемент) или атрибуты data-

<div class="col-md-12">
     <div class="card" id="count_one">
          <input type="hidden" class="idspeed" value="0.0000397938144330" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" class="idfloat" value="10.000067981099106">
                    <div class="media-body">
                         <span  data-Count>10.00009856</span>
                         <span data-Price>0.50</span>
                         <span data-Cash>5.00006288</span>
                    </div>
               </div>
               </div>
     </div>
</div>

<div class="col-md-12">
     <div class="card" id="count_two">
          <input type="hidden" class="idspeed" value="0.0000000020431799" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" id="float" value="100.00004564566">
                    <div class="media-body">
                         <span  data-Count>100.00009856</span>
                         <span data-Price>10.50</span>
                         <span data-Cash>1050.0004567456</span>
                    </div>
               </div>
               </div>
     </div>
</div>

Ну и скрипт тогда как то так будет
$(document).ready(function () {
	let cards = document.querySelectorAll('.card')
	
		setInterval(function () {
			cards.forEach (card => {
				
				const renderPrice = card.querySelector('[data-Price]');
				const renderSpeed = card.querySelector('.idspeed').value;
				const renderCount = card.querySelector('[data-Count]');
				const test = card.querySelector('[data-float]');
				const RenderSum = card.querySelector('[data-Cash]');
 
				test.vaue = parseFloat(renderSpeed / 600) + parseFloat(test.value)
				renderCount.textContent = parseFloat(test.value).toFixed(8)
				RenderSum.textContent = parseFloat(parseFloat(renderCount.textContent) * parseFloat(renderPrice.textContent)).toFixed(8)
			})
 
        } , 100)
 
});

Последний раз редактировалось voraa, 25.11.2020 в 09:02.
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2020, 08:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

card.querySelector('.idspeed').val(); - а в уме было другое?
Ответить с цитированием
  #5 (permalink)  
Старый 25.11.2020, 08:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Сообщение от laimas
card.querySelector('.idspeed').val(); - а в уме было другое?
Да.
Не всегда корректно пробираюсь в мешанине jquery и ванили.
Ответить с цитированием
  #6 (permalink)  
Старый 25.11.2020, 11:19
Интересующийся
Отправить личное сообщение для madam Посмотреть профиль Найти все сообщения от madam
 
Регистрация: 03.04.2015
Сообщений: 15

Uncaught TypeError: Cannot read property 'value' of null
const renderSpeed = card.querySelector('.idspeed').value;

at NodeList.forEach (<anonymous>)
Ответить с цитированием
  #7 (permalink)  
Старый 25.11.2020, 14:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

id="float" заменить на class="idfloat", в строке 13 ошибка, должно быть test.value, а не test.vaue.
Ответить с цитированием
  #8 (permalink)  
Старый 25.11.2020, 17:00
Интересующийся
Отправить личное сообщение для madam Посмотреть профиль Найти все сообщения от madam
 
Регистрация: 03.04.2015
Сообщений: 15

<div class="col-md-12">
     <div class="card" id="count_one">
          <input type="hidden" class="idspeed" value="0.0000397938144330" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" class="idfloat" value="10.000067981099106">
                    <div class="media-body">
                         <span  data-Count>10.00009856</span>
                         <span data-Price>0.50</span>
                         <span data-Cash>5.00006288</span>
                    </div>
               </div>
               </div>
     </div>
</div>
<div class="col-md-12">
     <div class="card" id="count_two">
          <input type="hidden" class="idspeed" value="0.0000000020431799" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" class="idfloat" value="100.00004564566">
                    <div class="media-body">
                         <span  data-Count>100.00009856</span>
                         <span data-Price>10.50</span>
                         <span data-Cash>1050.0004567456</span>
                    </div>
               </div>
               </div>
     </div>
</div>


$(document).ready(function () {
	let cards = document.querySelectorAll('.card')

		setInterval(function () {
			cards.forEach (card => {

				const renderSpeed = card.querySelector('.idspeed').value;
				const renderPrice = card.querySelector('[data-Price]');
				const renderCount = card.querySelector('[data-Count]');
				const test = card.querySelector('.idfloat');
				const RenderSum = card.querySelector('[data-Cash]');

				test.value = parseFloat(renderSpeed / 600) + parseFloat(test.value)
				renderCount.textContent = parseFloat(test.value).toFixed(8)
				RenderSum.textContent = parseFloat(parseFloat(renderCount.textContent) * parseFloat(renderPrice.textContent)).toFixed(8)
			})

        } , 100)

});


Все вроде работает правильно ,но куча ошибок

Uncaught TypeError: Cannot read property 'value' of null
at const renderSpeed = card.querySelector('.idspeed').value;

at NodeList.forEach (<anonymous>)
at cards.forEach (card => {

const renderSpeed = card.querySelector('.idspeed').value;
Ответить с цитированием
  #9 (permalink)  
Старый 25.11.2020, 17:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<html>
<body>
<div class="col-md-12">
     <div class="card" id="count_one">
          <input type="hidden" class="speed" value="0.0000397938144330" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" class="accret" value="10.000067981099106">
                    <div class="media-body">
                         <span class="count">10.00009856</span>
                         <span class="price">0.50</span>
                         <span class="cashe">5.00006288</span>
                    </div>
               </div>
               </div>
     </div>
</div>

<div class="col-md-12">
     <div class="card" id="count_two">
          <input type="hidden" class="speed" value="0.0000000020431799" />
          <div class="card-body">
               <div class="media align-items-center">
                    <input type="hidden" class="accret" value="100.00004564566">
                    <div class="media-body">
                         <span class="count">100.00009856</span>
                         <span class="price">10.50</span>
                         <span class="cashe">1050.0004567456</span>
                    </div>
               </div>
               </div>
     </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', _=> {
	let cards = document.querySelectorAll('.card')
		setInterval( _=> {
			cards.forEach (card => {
				let speed = card.querySelector('.speed').value,
                    accret = card.querySelector('.accret'),
				    count = card.querySelector('.count'),
				    price = card.querySelector('.price');

				accret.value = count.textContent = (speed / 600 + parseFloat(accret.value)).toFixed(12)
				card.querySelector('.cashe').textContent = (count.textContent * price.textContent).toFixed(12)
			})
        }, 100)
});
</script>
</body>
</html>


Переписано только лишь потому, чтобы во время "писания" увидеть ошибку. Убраны лишние parseFloat и accret.value = count.textContent = ... чтобы не писать дважды фактически одно и тоже. Округление до 12, чтобы видно что все Ок.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько тысяч объектов и оперативная память yinfo Node.JS 9 26.11.2018 13:22
Как применить один и тот же скрипт на странице два раза, с разными значениями noid Элементы интерфейса 5 31.10.2014 13:24
Как c функцией .ajax() передать несколько значений в php? Faab jQuery 11 19.11.2013 12:03
При повторении несколько раз animate - рассинхрон... Petja jQuery 4 21.05.2013 12:58
Запуск функции несколько раз подряд с разными параметрами ZaetS Общие вопросы Javascript 0 07.04.2011 19:43