В вашей скрипке collection
и selectCD
являются divs (не входные поля) , содержащие inputfields. Вы не можете сделать 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
(от расходов на доставку и отдельный компакт-дисков, таким образом, если они меняются, общее поле будет обновляться до).
working fiddle с этими изменениями (и некоторые другие исправления) на основе вашей скрипки, чтобы вы могли получить мотивированное наблюдение (расчет) в действии.
Однако я надеюсь, что это касается школьного вопроса, а не для живого интернет-магазина. Я бы передумал свою стратегию, поскольку, по-моему, вы сейчас работаете над большой дырой в безопасности.
Удачи вам!
Я бы посоветовал вам взглянуть на консоль ошибок: в вашем коде есть несколько синтаксических ошибок. –
вы добавили + вместо; NetStarter
Этот код содержит *** много *** ошибок синтаксиса! Во-первых, имена переменных * не могут содержать пробелы. Кроме того, у вас есть конечная '+' в вашей первой строке. –