JavaScript - Вычислите ценность элемента с, я хотел бы

Я не могу получить свои работы вычисления JavaScript для тележки.

Моя часть HTML получила многих другой входной элемент кроме тех с "ценой -" и "количество -" id. Так или иначе другой входной элемент портит множество, которое я предполагаю. Образец:

<input type="hidden" id="price-1" value="10.50"/>
<input type="hidden" id="qty-1" value="1"/>
<input type="hidden" id="shipFee-1" value="4.00"/>
<input type="hidden" id="tax-1" value="0.70"/>

<input type="hidden" id="price-2" value="19.20"/>
<input type="hidden" id="qty-2" value="2"/>
<input type="hidden" id="shipFee-2" value="4.00"/>
<input type="hidden" id="tax-2" value="1.30"/>

Я хочу, чтобы он привел в готовность общее количество (цена * количество) как "48.9". Вот проблематичная часть JavaScript:

var inputs=document.getElementsByTagName('input'),
    total = 0, 
    price = new Array(), 
    qty = new Array();

for (var i = 0 ; i < inputs.length ; i++) {
  if (inputs[i].id.indexOf('price-') == 0) {
    price[i] = parseFloat(document.getElementById(inputs[i].id).value);
    alert(price[i]); //alert result: 10.5 and 19.2
  }
  if (inputs[i].id.indexOf('qty-') == 0) {
    qty[i] = parseInt(document.getElementById(inputs[i].id).value);
    alert(qty[i]); //alert result: 1 and 2
  }
}

alert(price.length); //alert result: 5
alert(qty.length); //alert result: 6

for (i = 0 ; i < price.length ; i++) {
  total = total + price[i] * qty[i];
}
alert (total); //alert result: NaN
1
nl ja de
Вы уверены, что оба множества в том же самом индексе , я содержу ценности, которые могут быть умножены?
добавлено автор Anthony Forloney, источник
Да, мое плохое, я просто отвечаю на свой собственный вопрос сейчас. Я провел 1 час на этот сценарий, чтобы найти проблему, какую глупую мисс. Спасибо за напоминание @Anthony Forloney
добавлено автор v1n_vampire, источник

2 ответы

Вы строите ценовое множество на основе 'меня' счетчик цикла. Эти 10.50 входят в цену [0], quanty 1, который идет с ним, помещается в количество [1], тогда я прохожу ценности 2 и 3 без изменений множеств. Тогда, когда i=4, цена [4] добирается 19.20, и затем количество [5] добирается в 2 тогда следующих раза через.

Полученные массивы похожи

price[0] = 10.5, price[4] = 19.20
qty[1] = 1, qty[5] = 2

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

// i = 0
total = total + price[0] * qty [0]//price[0] = 10.50, but qty[0] = undefined, so total = Nan

// i = 1
total = total + price[1] * qty [1]//price[1] = undefined, qty[1] 1, so total = Nan

// etc.

Иметь смысл?

0
добавлено
Да, спасибо. Я ненавижу его, когда я делаю глупые ошибки как это и провожу часы, пытаясь решить их вздох . Должно быть более осторожным. @mrunion
добавлено автор v1n_vampire, источник

Never mind, I found the answer 10 minutes after I posted this question. I feel like an idiot now ==;
I need to use new variable for array instead of "i", since it used for input element array.

var inputs=document.getElementsByTagName('input'),
    total = 0, 
    price = new Array(), 
    qty = new Array(),
    j = 0, k = 0;

for (var i = 0 ; i < inputs.length ; i++) {
  if (inputs[i].id.indexOf('price-') == 0) {
    price[j] = parseFloat(document.getElementById(inputs[i].id).value);
    j++;
  }
  if (inputs[i].id.indexOf('qty-') == 0) {
    qty[k] = parseInt(document.getElementById(inputs[i].id).value);
    k++;
  }
}

for (i = 0 ; i < price.length ; i++) {
  total = total + price[i] * qty[i];
}
alert (total); //alert result: 48.9
0
добавлено
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском