Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   В поле выходит NAN (https://javascript.ru/forum/misc/12165-v-pole-vykhodit-nan.html)

Skipp 04.10.2010 16:15

Боря_Михалыч,
Так вы текст не вводите и NaN не будет вылезать

HelpeR 04.10.2010 16:18

Михалыч, попробуйте вместо
var a1= Number(document.form1.visota.value);

Написать
var a1= parseInt(document.form1.visota.value);

Skipp 04.10.2010 16:20

HelpeR,
один, фиг, разница:)

HelpeR 04.10.2010 16:22

Skipp,
спасет, если он введет 1см :)

Skipp 04.10.2010 16:24

Боря_Михалыч,
Поменяйте везде в value типа value="1,5", value="2,5" и т.д заместо запятых поставьте точки.

HelpeR,
А по моему "один, фиг, разница" :) что так, что так, будет либо NaN либо число

HelpeR 04.10.2010 16:26

тогда лучше напишите
var a1= parseFloat(document.form1.visota.value);

Sweet 04.10.2010 16:28

<form name="form1">
  <input type="text" onclick="this.style.backgroundColor = 'white';" name="visota" /><br/>
  <input type="text" onclick="this.style.backgroundColor = 'white';" name="shirina" /><br/>
  <input type="button" onclick="raschet(this.form)" value="Перемножить" /><br/>
  <input type="text" name="res_metall" />
</form>
<script>
function raschet(form){
  var visota = form[0], shirina = form[1],
  error;

  if(isNaN(visota.value)) {
    visota.style.backgroundColor = 'red';
    error = true;
  }
  if(isNaN(shirina.value)) {
    shirina.style.backgroundColor = 'red';
    error = true;
  }
  if(error == true) return NaN;
  s = visota.value * shirina.value;
  form[3].value=s;
  return s;
}
</script>

Sweet 04.10.2010 16:46

Или так:
<form name="form1">
  <input type="text" onclick="this.style.backgroundColor = 'white';" name="visota" /><br/>
  <input type="text" onclick="this.style.backgroundColor = 'white';" name="shirina" /><br/>
  <input type="button" onclick="raschet(this.form)" value="Перемножить" /><br/>
  <input type="text" name="res_metall" />
</form>
<script>
function check(el){
  if(isNaN(el.value)) {
    el.style.backgroundColor = 'red';
    return false;
  } else return true;
}
function raschet(form){
  var visota = form[0], shirina = form[1],
  checkResult = [check(visota), check(shirina)];
  for(var i = 0; i < checkResult.length; i++) if(!checkResult[i]) return NaN;
  form[3].value=visota.value * shirina.value;
}
</script>

Skipp 04.10.2010 16:49

хмммм интерестно почему эту
form[3].value=visota.value * shirina.value;

строчку не правильно подсветил интерпретатор.

Sweet 04.10.2010 17:03

А он тупой стал после последнего обновления (мне совсем не нравится html-подсветка). Из-за знака < он посчитал checkResult.length за тэг, а value=visota он посчитал за атрибут из-за =


Часовой пояс GMT +3, время: 09:00.