Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Help! Почему не работает код? (https://javascript.ru/forum/misc/28132-help-pochemu-ne-rabotaet-kod.html)

Hike89 08.05.2012 21:57

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>

bot87 08.05.2012 22:18

у вас ошибка var w = parseInt(document.calc.walls.value);
В select нету value.Его нужно достать ,видимо, с options.
var w = parseInt(document.calc.walls.options[document.calc.walls.selectedIndex].value);

Hike89 08.05.2012 22:35

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);.
А вот первый скрипт работать отказывается.

Hike89 08.05.2012 23:00

Вопрос снят, код верен, а не работал по причине того, что wordpress вставлял лишние теги

bes 09.05.2012 09:59

Цитата:

Сообщение от bot87
В select нету value

<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, на мой взгляд, получается короче и универсальней.

URANcn 04.06.2012 19:10

Цитата:

Сообщение от Hike89 (Сообщение 173338)
Вопрос снят, код верен, а не работал по причине того, что wordpress вставлял лишние теги

У меня та же проблема с калькулятором, можно ли узнать по подробнее как именно устранить проблему доставления лишних тегов wordpressм?:help:

Джэксон 05.06.2012 11:13

Есть один совет общий. НЕ знаю как вам, но мне удобней пользоваться
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, время: 05:11.