Javascript автоматически рассчитывается с (+) и (-) - PullRequest
1 голос
/ 01 января 2011

Мне нужна помощь в поиске ошибки в моих вычислениях JavaScript.

Мне нужно автоматически рассчитать сумму моих полей ввода, и мой пользователь сможет редактировать вычисления с помощью кнопок + или -.

Код, который у меня уже есть, выполняет вычисления автоматически, если вы вводите цифры вручную, но нажатие + или - не меняет вычисления.

Вот код:

<html>
<head>
<script language="javascript">
function Calc(className){
var elements = document.getElementsByClassName(className);
var total = 0;

for(var i = 0; i < elements.length; ++i){
total += parseInt(elements[i].value);
}

document.form0.total.value = total;
}

function addone(field) {
field.value = Number(field.value) + 1;
}

function subtractone(field) {
field.value = Number(field.value) - 1;
}
</script>

</head>
<body>
<form name="form0" id="form0">

1: <input type="text" name="box1" id="box1" class="add" value="0" onKeyUp="Calc('add')" onChange="updatesum()" onClick="this.focus();this.select();" />
<input type="button" value=" + " onclick="addone(box1);">
<input type="button" value=" - " onclick="subtractone(box1);">
<br />

2: <input type="text" name="box2" id="box2" class="add" value="0" onKeyUp="Calc('add')" onClick="this.focus();this.select();" />
<input type="button" value=" + " onclick="addone(box2);">
<input type="button" value=" - " onclick="subtractone(box2);">
<br />

3: <input type="text" name="box3" id="box3" class="add" value="0" onKeyUp="Calc('add')" onClick="this.focus();this.select();" />
<input type="button" value=" + " onclick="addone(box3);">
<input type="button" value=" - " onclick="subtractone(box3);">
<br />

<br />
Total: <input readonly style="border:0px; font-size:14; color:red;" id="total" name="total">

</form>
</body></html>

Я уверен, что проблема должна быть небольшой, я просто не могу указать на это пальцем.

Ответы [ 3 ]

2 голосов
/ 01 января 2011

Одним из простых способов является обновление суммы при нажатии кнопок. Вы можете добавить Calc('add') к событию onclick или к функциям addone и subtractone (хотя вы, вероятно, хотите добавить класс в качестве параметра). Например:

function addone(field) {
  field.value = Number(field.value) + 1;
  Calc('add');
}

function subtractone(field) {
  field.value = Number(field.value) - 1;
  Calc('add');
}

Рабочий пример: http://jsbin.com/umimu4/

1 голос
/ 01 января 2011

Вам нужно вызвать функцию Calc('add') после вызова addone() и вызвать subtractone().

EX:

<input type="button" value=" + " onclick="addone(box1); Calc('add')">
<input type="button" value=" - " onclick="subtractone(box1); Calc('add')">

Метод updatesum() также, кажется,отсутствует.

Я думаю, @ Коби имеет лучший ответ.

0 голосов
/ 01 января 2011

Ват тебе нужен?Я изменил свой собственный код:

&lt;html&gt;
&lt;head&gt;
&lt;script language=&quot;javascript&quot;&gt;
function Calc(className){
var elements = document.getElementsByClassName(className);
var total = 0;

for(var i = 0; i &lt; elements.length; ++i){
total += parseInt(elements[i].value);
}

document.form0.total.value = total;
}

function addone(field) {
field.value = Number(field.value) + 1;
}

function subtractone(field) {
field.value = Number(field.value) - 1;
}
&lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;
&lt;form name=&quot;form0&quot; id=&quot;form0&quot;&gt;

1: &lt;input type=&quot;text&quot; name=&quot;box1&quot; id=&quot;box1&quot; class=&quot;add&quot; value=&quot;0&quot; onKeyUp=&quot;Calc(&#039;add&#039;)&quot; onChange=&quot;updatesum()&quot; onClick=&quot;this.focus();this.select();&quot; /&gt;
&lt;input type=&quot;button&quot; value=&quot; + &quot; onclick=&quot;addone(box1); Calc(&#039;add&#039;)&quot;&gt;
&lt;input type=&quot;button&quot; value=&quot; - &quot; onclick=&quot;subtractone(box1); Calc(&#039;add&#039;)&quot;&gt;
&lt;br /&gt;

2: &lt;input type=&quot;text&quot; name=&quot;box2&quot; id=&quot;box2&quot; class=&quot;add&quot; value=&quot;0&quot; onKeyUp=&quot;Calc(&#039;add&#039;)&quot; onClick=&quot;this.focus();this.select();&quot; /&gt;
&lt;input type=&quot;button&quot; value=&quot; + &quot; onclick=&quot;addone(box2); Calc(&#039;add&#039;)&quot;&gt;
&lt;input type=&quot;button&quot; value=&quot; - &quot; onclick=&quot;subtractone(box2); Calc(&#039;add&#039;)&quot;&gt;
&lt;br /&gt;

3: &lt;input type=&quot;text&quot; name=&quot;box3&quot; id=&quot;box3&quot; class=&quot;add&quot; value=&quot;0&quot; onKeyUp=&quot;Calc(&#039;add&#039;)&quot; onClick=&quot;this.focus();this.select();&quot; /&gt;
&lt;input type=&quot;button&quot; value=&quot; + &quot; onclick=&quot;addone(box3); Calc(&#039;add&#039;)&quot;&gt;
&lt;input type=&quot;button&quot; value=&quot; - &quot; onclick=&quot;subtractone(box3); Calc(&#039;add&#039;)&quot;&gt;
&lt;br /&gt;

&lt;br /&gt;
Total: &lt;input readonly style=&quot;border:0px; font-size:14; color:red;&quot; id=&quot;total&quot; name=&quot;total&quot;&gt;

&lt;/form&gt;
&lt;/body&gt;&lt;/html&gt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...