Получение NaN при расчете
Я пытаюсь подсчитать общее количество выбранных компакт-дисков в дополнение к P&P. Код, который я использую, подходит к общему количеству NaN?
Очень смущен здесь. Что я делаю неправильно?
function calculateTotal() {
var Collection method = document.getElementById('collection').value +
var select CDs = document.getElementById('selectCD').value;
var total = document.getElementById('total');
total.value = 'collection'(total) + 'selectCD'(total);
}
Вот JSFiddle с полным кодом.
1 ответ
В твоей скрипке collection
а также selectCD
Div (не входные поля), содержащие входные поля. Ты не можешь сделать divElm.value
,
Тогда php-код в вашей скрипке, как правило, может выводить более одного компакт-диска, поэтому вам необходимо добавить итоги выбранных компакт-дисков.
Минимальные изменения, необходимые для работы вашего кода:
function calculateTotal(){
var coll = document.getElementsByName('deliveryType'),
cds = document.getElementsByName('cd[]'),
cdTot = 0,
L = coll.length;
while(L--){if(coll[L].checked){ //get shipping costs
coll=Number(coll[L].getAttribute('title')); break;
} }
L=cds.length;
while(L--){if(cds[L].checked){ //add total prices
cdTot += Number(cds[L].getAttribute('title'));
} }
// output total
document.getElementById('total').value = coll + cdTot;
}
Также вы хотели бы установить еще несколько триггеров для работы calculateTotal
(из стоимости доставки и выбранных компакт-дисков; таким образом, если они изменятся, поле итогов будет обновлено до).
Посмотрите эту рабочую скрипку с этими изменениями (и некоторыми другими исправлениями) на основе вашей скрипки, чтобы вы могли быть мотивированы, увидев ее (расчет) в действии.
Однако я надеюсь, что это для школьного вопроса, а не для живого интернет-магазина. Я бы переосмыслил свою стратегию, поскольку я думаю, что вы в настоящее время прокладываете себе путь к большой дыре в безопасности.
Удачи!