-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
1

Простая форма веб-форма для сложения двух чисел не работает

25.05.2016, 10:03. Показов 3405. Ответов 25
Метки нет (Все метки)

Не работает скрипт для подсчета сложения.Может я неправильно привязал обработчик события(клик на кнопку подсчитать)?


Вот код:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<html>
<head>
        <title>Приложение сложения</title>
<meta charset="utf-8">
 
<script type="text/javascript">
 
 
function add(){
 
var ff=document.getElementById("num1");
var ss=document.getElementById("num2");
var action=document.getElementById("end");
 
 
function addin(ff,ss){
 
return ff+ss;
};
 
 
};  
  var res=document.getElementById("end").onclick=add;
 
</script>
 
</head>
 
 
<body style="white-space:pre">
<h1>форма для сложения чисел</h1>
<form>
 
 Укажите первое число:<input type="text" id="num1"  size="5" placeholder="number"></input>
 
Укажите второе число:<input type="text" id="num2"  size="5"></input>
<button id="end">Посчитать!!</button>
 
 
Результат:<input type="text" id="result"  size="5"></input>
 
</form>
 
 
</body>
 
</html>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2016, 10:03
Ответы с готовыми решениями:

Простая форма
Здравствуйте, уважаемые форумчане. у меня вопрос такого плана. Есть 2 формы - одна видимая - при...

Почему работает только одна форма из двух?
Помогите, пожалуйста, сам я в javascript понимаю слабо. Сделал две аналогичных формы, запускаемых...

Не работает простая форма
&lt;?php if(isset($_POST, $_POST , $_POST)) { if ($_POST==''){ echo &quot;Введи имя сцука&quot;; } else{...

Не работает веб форма error forms ID
Были формы &quot;заказать звонок&quot;, &quot;обратная связь&quot;, &quot;Заказанные товары&quot;. Добавил &quot;Вызов специалиста&quot; ...

25
55 / 22 / 10
Регистрация: 18.05.2016
Сообщений: 89
25.05.2016, 10:33 2
Value из формы посылается на сервер

А вот так var ff=document.getElementById("num1"); вы получаете не значение из инпута, а [object HTMLInputElement]
(можете через консоль проверить).
Т.Е. ff+ss получается [object HTMLInputElement] + [object HTMLInputElement],
0
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 12:11  [ТС] 3
а как тогда получить значение из импута?
0
Хитрая блондиночка $)
1470 / 985 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
25.05.2016, 12:15 4
Вот так:
Javascript
1
var ff=document.getElementById("num1").value;
1
супермизантроп
Эксперт JS
3935 / 2974 / 691
Регистрация: 18.04.2012
Сообщений: 8,623
25.05.2016, 12:19 5
вы не числа складываете
своей инструкцией ff+ss вы пытаетесь сложить два тега, чего сделать в принципе невозможно -- складывать можно значения тегов
но даже если вы попытаетесь сложить значения тегов -- ff.value +ss.value, то и тут вы не получите желаемого результата, потому что значение value -- это всегда строка (тип string)
сложение двух строк через оператор + приведёт к их конкатенации (к склеиванию в одну строку)
для получения арифметической суммы сначала обе строки надо преобразовать в числа

окончательно return +ff.value + +ss.value;
1
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 12:24  [ТС] 6
и еще-а как проверить ?
я только начал изучать джаву скрипт и(базовый джава скрипт и клиентский джава скрипт),и думал что среда разработки это текстовый редактор а не консоль.

Насколько я знаю данные которые отправляются через форму попадают на сервер и обрабатываются программой написаной на PHP.

Для создания данной веб страницы(по сути веб-приложение) я думал можно обойтись только скриптом(так как сохранять на сервере данные не требуется) .

Задача была сделать страницу которая подсчитывала суму двух чисел,ведь клиентского джава скрипт достаточно? или для такой задачи нужно все же знать серверный джава скрипт?

Добавлено через 2 минуты
Цитата Сообщение от kalabuni Посмотреть сообщение
ff.value +ss.value,
Я так понимаю value выступает тут в роли свойства обьектов ff и ss верно?

Добавлено через 2 минуты
value это свойство обьекта ff?
0
супермизантроп
Эксперт JS
3935 / 2974 / 691
Регистрация: 18.04.2012
Сообщений: 8,623
25.05.2016, 12:33 7
Цитата Сообщение от TVPNERO Посмотреть сообщение
value это свойство обьекта ff?
с точки зрения HTML value -- это атрибут HTML-тега,
с точки зрения javascript'a value -- это свойство объекта и ссылка ff.value вернёт значение этого свойства
0
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 12:37  [ТС] 8
Попробовал вот так но не получается.Результат не производится.Может я неверно вызываю функцию в троку результата-var res=document.getElementById("end").onclick=add; ?

Вот код:


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<html>
<head>
        <title>Приложение сложения</title>
<meta charset="utf-8">  
<script type="text/javascript">
 
 
function add(){
 
var ff=document.getElementById("num1");
var ss=document.getElementById("num2");
var action=document.getElementById("end");
 
 
function addin(ff,ss){
 
return +ff.value+ +ss.value;
};
 
 
};  
  var res=document.getElementById("end").onclick=add;
 
</script>
 
 
 
 
 
</head>
 
 
<body style="white-space:pre">
<h1>форма для сложения чисел</h1>
<form>
 
 Укажите первое число:<input type="text" id="num1"  size="5" placeholder="number"></input>
 
Укажите второе число:<input type="text" id="num2"  size="5"></input>
<button id="end">Посчитать!!</button>
 
 
Результат:<input type="text" id="result"  size="5"></input>
 
</form>
 
 
</body>
 
</html>
0
55 / 22 / 10
Регистрация: 18.05.2016
Сообщений: 89
25.05.2016, 12:48 9
"value это свойство обьекта ff?"

Да в данном случае это св-во объекта.

Но как говорили выше, вот так "ff.value +ss.value" верный ответ все равно не получишь, нужно значения привести из строк в число. (см. что пишет "kalabuni")

https://jsfiddle.net/n0kbuh87/
как то так
0
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 13:15  [ТС] 10
вот переписал точка в точку.но результат в строку резулбтата не появляется


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<html>
<head>
        <title>Приложение сложения</title>
<meta charset="utf-8">  
<script type="text/javascript">
 
 
var ff=document.getElementById("num1");
var ss=document.getElementById("num2");
var action=document.getElementById("end")
 
 action.onclick=function(){
    var x=+ff.value+ +ss.value;
    alert(x)
 }
 
 
 
</script>
 
</head>
 
 
<body style="white-space:pre">
<h1>форма для сложения чисел</h1>
<form>
 
 Укажите первое число:<input type="text" id="num1"  size="5" placeholder="number"></input>
 
Укажите второе число:<input type="text" id="num2"  size="5"></input>
<input type="submit" id="end" value="посчитать!!"></input>
 
 
Результат:<input type="text" id="result"  size="5"></input>
 
</form>
 
 
</body>
 
</html>
Добавлено через 5 минут
о есть код вроде правильный но в строку результата подсчет не лезет.
0
55 / 22 / 10
Регистрация: 18.05.2016
Сообщений: 89
25.05.2016, 13:46 11
https://jsfiddle.net/sL9xbfo7/
Вот так.

Да и </input> - закрывающий тэг не нужен
0
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 14:15  [ТС] 12
А можно весь код на тут на форуме для меня оставить?
я попробовал но не получилось даже алерт не срабатівает.

вот мой код как Вы предложили:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<html>
<head>
        <title>Приложение сложения</title>
<meta charset="utf-8">  
<script type="text/javascript">
var ff=document.getElementById("num1");
var ss=document.getElementById("num2");
 var action=document.getElementById("end");
  var res=document.getElementById("result");
 
 action.onclick=function(){
    var res=document.getElementById("result");
    var x=+ff.value+ +ss.value;
    alert(x);
     res.setAttribute("value", x);
    }
 
</script>
 
</head>
 
<body style="white-space:pre">
<h1>форма для сложения чисел</h1>
<form>
 
 Укажите первое число:<input type="text" id="num1"  size="5" placeholder="number"></input>
 
Укажите второе число:<input type="text" id="num2"  size="5"></input>
<input type="submit" id="end" value="посчитать!!"></input>
 
 
Результат:<input type="text" id="result"  size="5"></input>
 
</form>
 
 
</body>
 
</html>
0
55 / 22 / 10
Регистрация: 18.05.2016
Сообщений: 89
25.05.2016, 14:24 13
Лучший ответ Сообщение было отмечено TVPNERO как решение

Решение

Скорее всего нужно просто скрипт вставить после элементов формы (перед закрывающим тэгом </body>)
А то получается что скрипт срабатывает, а DOM элементы еще не загрузились
0
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 14:32  [ТС] 14
Урааааа!теперь получилось .Спасибо.
Даже не знал что скрипт можно вставлять в разделе body.

Только результат появляется в строке результата и сразу исчезает,почему?
0
55 / 22 / 10
Регистрация: 18.05.2016
Сообщений: 89
25.05.2016, 14:38 15
<input type="submit" id="end" value="посчитать!!">
эта кнопка перезагружает страницу

попробуй заменить ее на <div id="end">посчитать<div>
только чтобы div красивый был добавить ему стилей cursor: pointer
0
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 14:44  [ТС] 16
Мои благодарности.Все получилось.
кстати не знаете еще какие то хорошие книги по джава скрипт .кроме девида фленнигана?
0
55 / 22 / 10
Регистрация: 18.05.2016
Сообщений: 89
25.05.2016, 14:48 17
https://learn.javascript.ru/
Мне очень понравился ресурс. Огромный плюс, что есть практика.
1
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 17:46  [ТС] 18
да.да практика то что мне необходимо.

Добавлено через 2 часа 25 минут
А вот я еще попробовал изменить способ получения результата на-

Javascript
1
2
var x=+ff.value+ +ss.value;
     res.value=x.value;// получение результата вместо строки res.setAttribute("value", x)
но строка результата відает-undefined.Почему?

И как еще можно заменить строку-res.setAttribute("value", x); ?

я даже пробовал-res=x но не работает.
0
55 / 22 / 10
Регистрация: 18.05.2016
Сообщений: 89
25.05.2016, 17:57 19
res.value=x.value
А почему x.value а не просто x?

Должно работать.
1
-26 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
25.05.2016, 18:02  [ТС] 20
да сработало.

а просто res=x;-не работает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2016, 18:02
Помогаю со студенческими работами здесь

Простая форма для вывода текста с двумя кнопками
Здравствуйте. Пытаюсь сделать простую форму для вывода в нее текста и две кнопки ниже формы. В...

Управляемая форма. Не работает форма списка документа
Здравствуйте! Создал форму списка документа, сделал ее основной формой списка. В конфигураторе все...

Не работает форма обратной связи и форма авторизации
Не работает форма обратной связи и форма авторизации. Когда регистрируешься и нажимаешь на кнопку...

Добавление записи в Listview(1 форма) через Диалоговое окно(3 форма) другой формы (2 форма)
Всем доброго дня и с наступающими праздниками! Знаю, тема 7 частых вопросов по WinForms уже не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru