Несколько комментариев:
Несмотря на то, что большинство браузеров используют первый вариант выбранного элемента, выбранного по умолчанию, некоторые могут этого не делать.Поэтому всегда задавайте опцию по умолчанию для выбранного атрибута.
Вы можете немного упростить задачу, используя значения опций, такие как «2,5», а не «2,5 дюйма».
В вашем коде:
> var size_prices= new Array();
> size_prices["None"]=0;
> size_prices["2.5 inches"]=.10;
> size_prices["3 inches"]=.20;
Здесь вы используете массив как объект.Лучше использовать правильный инструмент для работы, поэтому используйте объект:
var size_prices= {
'None': 0,
'2.5 inches': 0.10,
'3 inches': 0.20
};
То же самое относится и к «массиву» color_prices.
[...]
> var sizePrice=0;
Если вы не собираетесь использовать назначенное значение, не назначайте его.Вы присваиваете значение позже, поэтому просто объявите переменную:
var sizePrice;
В функции getQuantity :
> if(quantity.value!="") {
> howmany = parseInt(quantity.value);
> }
> return howmany;
Вы действительно должны проверить любое входное значение какэто может быть мусор или возвращаемое значение, как это может быть NaN (потому что входные данные были мусором).И вы должны всегда включать основание с парсингом в случае, если введено 09:
alert(parseInt('09')); // 0
alert(parseInt('09', 10)); // 9
В функции getTotal :
> var instantPrice = getSizePrice() + getShapePrice() + getColorPrice();
Куда включается количество?
Редактировать
Я не знаю, где вы идете не так, используя следующее:
var instantPrice = (getSizePrice() + getShapePrice() +
getColorPrice()) * getQuantity();
Я получаю то, что кажется правильным значением.Вам необходимо поработать над проверкой введенного значения для количества и правильно отформатировать ответ до двух десятичных знаков.