Переписать как:
function setbid(catid) {
var lookup = {
'30' : 1,
'31' : 2,
'32' : 6
};
if (lookup.hasOwnProperty(catid)) {
var el = document.getElementById('bannerid');
if (el) {
el.value = lookup[catid];
}
}
}
И убедитесь, что есть элемент с атрибутом id точно , записанный как bannerid .
Функция, которую я вам даю, немного отличается от вашей:
- использование таблицы поиска для получения значений вместо цепочек if (особенно, если вы добавите значения позже)
- выполняет поиск элемента только в одной части кода вместо дублирования
- проверка существования элемента
РЕДАКТИРОВАТЬ для обновления2 :
Примечание, имеющее непосредственное отношение к вашей проблеме, но:
- Скорее всего, ваш скрипт должен находиться в разделе
<head>
- Вы должны использовать прогрессивное улучшение, чтобы реагировать на события, а не искажать код HTML и JavaScript. Вместо этого используйте перехват событий.
Также проверьте исходный код отображаемой страницы, чтобы увидеть, не были ли некоторые элементы обработаны средством визуализации из-за неправильной работы или вашим кодом PHP.
EDIT:
Если я тестирую со следующим, он отлично работает:
<script>
function setbid(catid)
{
var lookup = {
'30' : 1,
'31' : 2,
'32' : 6
};
if (lookup.hasOwnProperty(catid)) {
var el = document.getElementById('bannerid');
if (el) {
el.value = lookup[catid];
alert('done [' + el.value + ']');
}
}
}
</script>
<div style="margin:0px auto">
<div class="instantprice-popup-bg">
<form name="instantpop" id="instantpop" action="" method="post" style="margin:0px; padding:0px" onsubmit="">
<input type="hidden" name="sessid" id="sessid" value="<?php echo $_GET['osCsid'];?>">
<div class="instantprice">
<ul>
<li class="text12pt" style="color:#FF0000; display:none;" id="appsize">For special low price on sizes over 30ft. wide and 10ft. height contact us on sales@bannerbuzz.com.</li>
<li class="text12pt" style="color:#FF0000; display:none;" id="vinylsize">Please enter width upto 30 ft & height upto 5 ft for Vinyl Signs/Decals(Posters).</li>
<li class="col1">Select Product</li>
<li class="col2">
<input type="hidden" name="price" id="price" value="15" />
<input type="hidden" name="bannerid" id="bannerid" value="" />
<select name="product" class="dropdownfield" id="product" style="width: 180px;" onchange="javascript:setbid(document.getElementById('product').value);">
<option value="">Select Product</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
</select></li>
</ul>
<input type="hidden" name="getpriceclick" value="1" />
</div>
</form>
</div>
</div>
Итак, у вас есть что-то испорченное. Я подозреваю, что в вашем PHP-коде что-то идет не так и выдает некорректный вывод.