Помогите исправить ошибки в лабораторных работах по информатике
Помогите пожалуйста исправить ошибку, при нажатии на функцию сложение, складываются не 2 числа а эти числа просто пишутся рядом ,например 1+2= не 3 ,а 12
<html> <head><title>Калькулятор</title> <script language="JavaScript"> function calc(){ var a = form1.al.value; var b = form1.bl.value; var d = form1.del.checked; var e = form1.ymn.checked; var g = form1.mines.checked; var c = form1.plus.checked; if (d==true) form1.resultl.value = a / b; if (e==true) form1.resultl.value = a * b; if (g==true) form1.resultl.value = a - b; if (c==true) form1.resultl.value = a + b; } </script> </head> <body> <form name="form1"> <p><input type="radio" name="del">Деление</p> <p><input type="radio" name="ymn">Умножение</p> <p><input type="radio" name="plus">Сложение</p> <p><input type="radio" name="mines">Вычитание</p> Число 1: <input type="text" name="al"><br> Число 2: <input type="text" name="bl"><br> Результат: <input type="text" name="resultl"> <input type="button" name="Решить" value="Решить" onClick="calc()"> <input type="reset" name="Отмена" value="Отмена"> </form> </body> </html> |
В JavaScript оператор сложения перегружен: если один из аргументов - строка, то другой тоже приводится к строке и происходит конкатенация. Поэтому, Вам нужно привести свои переменные к числовому типу.
|
<script type="text/javascript"> window.onload = function() { var forma = document.forma.elements; forma[3].onclick = function() { var val = function(i) { return parseFloat(forma[i].value); }; forma[2].value = val(0) + val(1); return false; }; }; </script> <form name="forma"> <input type="text" value="" /> + <input type="text" value="" /> = <input type="text" value="" readonly="readonly" /> <input type="submit" value="click" /> </form> |
Благодарю вас!
|
Сегодня налетел.два числа,в этом уверен-поскольку используются в выражениях математических и результат правильный-а между собой как строки начали складываться-пришлось переводить тип
|
Цитата:
раньше AS компилятор в браузеры встроят :D |
Цитата:
|
Цитата:
var i:int = 10; //целочисленное значение (как в AS) |
monolithed,
и что это даст? |
Относительно этого случая, если для входящих аргументов будет использоваться приведение типов, то к целочисленным значениям не будет примерна конкатенация строк.
По сути это будет тот же parseInt/Float, но только для переменной изначально будет выделено определенное количество байтов для хранения значений и результат всегда будет предсказуем (для всех категорий разработчиков)... |
Часовой пояс GMT +3, время: 03:08. |