Помогите исправить ошибки в лабораторных работах по информатике
Помогите пожалуйста исправить ошибку, при нажатии на функцию сложение, складываются не 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, но только для переменной изначально будет выделено определенное количество байтов для хранения значений и результат всегда будет предсказуем (для всех категорий разработчиков)... |
Относительно данного случая, двум строкам делается +, с чего бы строки складывать как числа?
|
Kolyaj,
это monolithed, по моему вопросу.у меня были заведомо числа.с ними всё норм ,а вот результаты ,после математических операций над ними начали складываться как строки |
dmitriymar,
про это то бишь Цитата:
|
Kolyaj,
там строк 150 кода. операции над мат величинами. гдето строке на 50 начилась проблемы. до этого всё норм. думаю будет не правильно скидывать это сюда. но если интересно весь проект могу на почту скинуть. буду признателен если вы увидите мою недоработку изза чего это всё пошло. все мы люди-все ошибаемся-эт я о себе |
Цитата:
|
Дак в том и проблема что по отдельности всё работает правильно. рассчитываются координаты контейнеров и выставляются конейнерам стили. гдето на 20 контейнере появляется эта петрушка. может начинает переменную ассоциировать со строкой-после того как её значение несколько раз присваивалось строковой
|
Убирайте постепенно различные блоки кода, смотрите на каком ломается.
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 03:25. |