Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.05.2011, 21:15
Новичок на форуме
Отправить личное сообщение для muzhik65 Посмотреть профиль Найти все сообщения от muzhik65
 
Регистрация: 02.05.2011
Сообщений: 2

Помогите исправить ошибки в лабораторных работах по информатике
Помогите пожалуйста исправить ошибку, при нажатии на функцию сложение, складываются не 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>
Ответить с цитированием
  #2 (permalink)  
Старый 02.05.2011, 21:25
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

В JavaScript оператор сложения перегружен: если один из аргументов - строка, то другой тоже приводится к строке и происходит конкатенация. Поэтому, Вам нужно привести свои переменные к числовому типу.
Ответить с цитированием
  #3 (permalink)  
Старый 02.05.2011, 21:52
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<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>

Последний раз редактировалось monolithed, 03.05.2011 в 17:30.
Ответить с цитированием
  #4 (permalink)  
Старый 02.05.2011, 22:20
Новичок на форуме
Отправить личное сообщение для muzhik65 Посмотреть профиль Найти все сообщения от muzhik65
 
Регистрация: 02.05.2011
Сообщений: 2

Благодарю вас!
Ответить с цитированием
  #5 (permalink)  
Старый 02.05.2011, 22:22
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Сегодня налетел.два числа,в этом уверен-поскольку используются в выражениях математических и результат правильный-а между собой как строки начали складываться-пришлось переводить тип
Ответить с цитированием
  #6 (permalink)  
Старый 03.05.2011, 17:28
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от dmitriymar
строки начали складываться-пришлось переводить тип
нет чтобы ввести типизацию
раньше AS компилятор в браузеры встроят

Последний раз редактировалось monolithed, 03.05.2011 в 17:32.
Ответить с цитированием
  #7 (permalink)  
Старый 04.05.2011, 10:34
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Сообщение от monolithed
нет чтобы ввести типизацию
а по подробнее?.мож одно и тоже по разному называем)

Последний раз редактировалось dmitriymar, 04.05.2011 в 11:12.
Ответить с цитированием
  #8 (permalink)  
Старый 04.05.2011, 17:01
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от dmitriymar
а по подробнее?.мож одно и тоже по разному называем)
var i:int = 10; //целочисленное значение (как в AS)
Ответить с цитированием
  #9 (permalink)  
Старый 04.05.2011, 17:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

monolithed,
и что это даст?
Ответить с цитированием
  #10 (permalink)  
Старый 04.05.2011, 20:34
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Относительно этого случая, если для входящих аргументов будет использоваться приведение типов, то к целочисленным значениям не будет примерна конкатенация строк.
По сути это будет тот же parseInt/Float, но только для переменной изначально будет выделено определенное количество байтов для хранения значений и результат всегда будет предсказуем (для всех категорий разработчиков)...

Последний раз редактировалось monolithed, 04.05.2011 в 20:38.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить баг с формой ввода Bandicoot jQuery 4 10.03.2011 18:41
Помогите исправить ошибки. AJAX на MooTools 1.11 dron79 Библиотеки/Тулкиты/Фреймворки 0 26.08.2010 09:40
Помогите исправить ошибку в коде JsLoveR Общие вопросы Javascript 2 18.12.2009 20:09
Помогите исправить расположение окон abramovichanya Работа 2 10.07.2009 01:00
Помогите исправить скрипт по поиску в базе данных dok_sj2 Internet Explorer 2 29.06.2009 19:04