Я пытаюсь заставить свой код читать значение, основанное на выбранном элементе, из списка выбора в моей форме, но он говорит, что он не определен. Когда я просто передаю функции значение и скажу, чтобы оно возвращало значение, оно читает, но не принимает значения из формы.Javascript не будет читать из «select» в форме
Ниже приведен код, я использую
для формы (в HTML):
<form action="" id="orderForm" name="orderForm" onsubmit="return false;">
<select id="item" name='item' onchange="calculateCost()">
<option value="None">Select Item</option>
<option value="Candlestick">Candlestick ($10)</option>
<option value="Bowl">Bowl ($10)</option>
<option value="Burl_Bowl">Burl Bowl ($20)</option>
<option value="Clock">Clock ($15)</option>
<option value="Vase">Vase ($5)</option>
<option value="Pen">Pen ($2)</option>
<option value="Top">Spinning Top ($1)</option>
</select>
<div id="totalPrice">hallo</div>
</form>
и Javascript читает
function calculateCost()
{
var orderPrice = getItemPrice();
document.getElementById('totalPrice').innerHTML = orderPrice;
}
var item_prices= new Array();
item_prices["None"]=0;
item_prices["Candlestick"]=10;
item_prices["Bowl"]=10;
item_prices["Burl_Bowl"]=20;
item_prices["Clock"]=15;
item_prices["Vase"]=5;
item_prices["Pen"]=2;
item_prices["Top"]=1;
function getItemPrice()
{
var itemPrice = 0;
var theForm = document.forms["orderForm"];
var selectedItem = theForm.elements["item"];
itemPrice = item_prices[selectedItem.value];
return itemPrice;
}
Не используйте массив с нечисловыми клавишами. Если вы хотите использовать его как объект, используйте объект: 'var item_prices = {None: 0, Candlestick: 1, ...}'. –
Я пытался изменить наименьшее возможное количество, чтобы не путать его ... но да, объекты были бы лучше. –
Ах, извините, я не понял, что OP фактически использовал это. Тем не менее, если вы дадите ответ, сделайте это правильно :) –