Help! Почему не работает код?
Написал простенький онлайн калькулятор для сайта. Скрипт должен обработать форму.
Форма: <form name="calc"> <strong>Параметр стен:</strong><p> <select name="walls"> <option value="1">Без стен</option> <option value="2">Тентовые стены</option> <option value="3">Стены из профлиста</option> </select> <p><strong>Площадь ангара:</strong><p> <input name="square" type="text" value="0" size="6"> <br><input type="button" value=" Рассчитать " onclick="result(walls, square)"> <p><strong>Ориентировочная стоимость:</strong><p> <input name="res" type="text" value="0"> </form> Скрипт:
<script language="JavaScript"> function result(walls, square)
{
var w = parseInt(document.calc.walls.value);
var s = parseInt(document.calc.square.value);
if (s>=500)
{
if (w==1)
{ document.calc.res.value = s * 40; }
else if (w==2)
{ document.calc.res.value = s * 65; }
else
{ document.calc.res.value = s * 85; }
}
else
{
if (w==1)
{ document.calc.res.value = s * 55; }
else if (w==2)
{ document.calc.res.value = s * 75; }
else
{ document.calc.res.value = s * 100; }
}
}
</script>
Сей скрипт отказывается выдавать какой-либо результат. Пробовал использовать условный оператор "и" - тоже глухо. Заработал у меня только следующий скрипт, но от него толку мало. Подскажите, пожалуйста, где может быть ошибка?
<script language="JavaScript"> function result(walls, square)
{
var w = parseInt(document.calc.walls.value);
var s = parseInt(document.calc.square.value);
if (s>500) {document.calc.res.value= 40 * s;}
else {document.calc.res.value= 55 * s;}
}
</script>
|
у вас ошибка var w = parseInt(document.calc.walls.value);
В select нету value.Его нужно достать ,видимо, с options. var w = parseInt(document.calc.walls.options[document.calc.walls.selectedIndex].value); |
bot87, код
<script language="JavaScript"> function result(walls, square)
{
var w = parseInt(document.calc.walls.value);
var s = parseInt(document.calc.square.value);
if (s>500) {document.calc.res.value= 40 * s;}
else {document.calc.res.value= 55 * s;}
}
</script>
работает и с вашей строчкой и с var w = parseInt(document.calc.walls.value);. А вот первый скрипт работать отказывается. |
Вопрос снят, код верен, а не работал по причине того, что wordpress вставлял лишние теги
|
Цитата:
<select id="walls"> <option value="1">Без стен</option> <option value="2">Тентовые стены</option> <option value="3">Стены из профлиста</option> </select> <input type="button" value="Show value" onclick="alert(walls.value)"> При таком обращении у select-a должен быть задан id. Использующаяся в примере автора последовательность со значением атрибута name, конечно, также работает, но через id, на мой взгляд, получается короче и универсальней. |
Цитата:
|
Есть один совет общий. НЕ знаю как вам, но мне удобней пользоваться
document.getElementById('').value. <form name="calc"> <strong>Параметр стен:</strong><p> <select name="walls" id="selectSp"> <option value="1">Без стен</option> <option value="2">Тентовые стены</option> <option value="3">Стены из профлиста</option> </select> <p><strong>Площадь ангара:</strong><p> <input name="square" id="squareTx" type="text" value="0" size="6"> <br><input type="button" value=" Рассчитать " onclick="result(walls, square)"> <p><strong>Ориентировочная стоимость:</strong><p> <input name="res" id="otvet" type="text" value="0"> </form>
<script>
var w=document.getElementById('selectSp').value,
s=document.getElementById('squareTx').value,
w=parseFloat(w),
s=parseFloat(s),
rez=document.getElementById('otvet).value;
if (s>=500)
{
if (w==1)
{ rez = s * 40; }
else if (w==2)
{ rez = s * 65; }
else
{ rez = s * 85; }
}
else
{
if (w==1)
{ rez = s * 55; }
else if (w==2)
{ rez = s * 75; }
else
{ rez = s * 100; }
}
}
</script>
|
| Часовой пояс GMT +3, время: 16:56. |