Получение 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 (из стоимости доставки и выбранных компакт-дисков; таким образом, если они изменятся, поле итогов будет обновлено до).
Посмотрите эту рабочую скрипку с этими изменениями (и некоторыми другими исправлениями) на основе вашей скрипки, чтобы вы могли быть мотивированы, увидев ее (расчет) в действии.

Однако я надеюсь, что это для школьного вопроса, а не для живого интернет-магазина. Я бы переосмыслил свою стратегию, поскольку я думаю, что вы в настоящее время прокладываете себе путь к большой дыре в безопасности.

Удачи!

Другие вопросы по тегам