Mam formularz z wieloma teksturkami i liczbą pola tekstowych Zmieniają się w zależności od wartości, które odzyskam z bazy danych. Próbuję zrobić, to pomnożyć wszystkie wartości wartości textFields, więc najpierw umieściłem je w tablicy i pomnożyć je i wysłać odpowiedź na textbox. Ale nie mogę wydawać się właściwej odpowiedzi.

Na przykład, gdy mam 3 pola tekstowe i wprowadzam 1 do każdego pola tekstowego, powinienem uzyskać 1x1x1 = 1, ale otrzymuję odpowiedź jako 3. Gdy wejdę do 2 w każdym polu tekstowym powinienem uzyskać 2x2x2 = 8, ale odpowiedź wynosi 12.

Mój kod wygląda następująco:

Kod JavaScript:

function sumfrm(form){ 
  var totalOdds = 0;
  var odds = document.getElementsByTagName('input');
  var n;
  var i; //
for (i = 0; i < odds.length; ++i) {
  n = parseFloat(odds.item(i).value, 10);
    if (!isNaN(n)) {
       totalOdds += n*n;
   }
}
4
London Boy 19 listopad 2011, 04:53

5 odpowiedzi

Najlepsza odpowiedź
var totalOdds = 1; //initialize like this
totalOdds = totalOdds * n // do this in your for loop

Powinien załatwić sprawę

Co obecnie masz dla 1x1x1.

totalOdds na początku wynosi 0

Po totalOdds += 1 * 1

Jest 1

Znowu po raz drugi totalOdds += 1 * 1

Jest 2.

A po trzecim czasie jest 3

2
parapura rajkumar 19 listopad 2011, 00:55
for (i = 0; i < odds.length; ++i) {
    n = parseFloat(odds.item(i).value, 10);
    if (!isNaN(n)) {
        totalOdds *= n;
    }
}
1
basilkot 19 listopad 2011, 00:58
function sumfrm(form){ 
  var totalOdds = 1; // changed
  var odds = document.getElementsByTagName('input');
  var n;
  var i; //
for (i = 0; i < odds.length; ++i) {
  n = parseFloat(odds.item(i).value, 10);
    if (!isNaN(n)) {
       totalOdds *= n; // changed
   }
}

Zmieniono dwie linie. Powinien działać poprawnie teraz, brat :)

1
lowZoom 19 listopad 2011, 01:01

Podejmujesz sumę kwadratów liczb. Zamiast tego zrobić:

function sumfrm(form){ 
  var totalOdds = 1;
  var odds = form.getElementsByTagName('input');
  var n, i;
  for(i = 0; i < odds.length; i++) {
    n = parseFloat(odds[i].value);
    if(!isNaN(n)) {
       totalOdds *= n;
    }
  }
}
0
Ry- 19 listopad 2011, 01:12

Aby wykonać tablicę pomnóż, będzie lepiej używać domyślnej funkcji w skrypcie Java "Zmniejsz", możesz nacisnąć wszystkie wartości do tablicy, a następnie zrobienie mnożenia Wypróbuj poniższy kod. (To ES6)

let sum = [1, 1, 1].reduce( (prev, curr) => prev * curr );
0
VISHNU Radhakrishnan 20 lipiec 2017, 12:17