Zliczanie danych w javascript


(Janek Max) #1

Próbowałem poradzić sobie sam, tworząc zmienne kompinować ale za każdym razem mi nie wychodzilo.

function calculateTotal(inputItem) {

  with (inputItem.form) {

    // Process each of the different input types in the form.

    if (inputItem.type == "radio") { // Process radio buttons.

      // Subtract the previously selected radio button value from the total.

      calculatedTotal.value = eval(calculatedTotal.value) - eval(previouslySelectedRadioButton.value);

      // Save the current radio selection value.

      previouslySelectedRadioButton.value = eval(inputItem.value);

      // Add the current radio button selection value to the total.

      calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);

    } 

	    if (inputItem.type == "text") { // Process radio buttons.

      // Subtract the previously selected radio button value from the total.

      calculatedTotal.value = eval(calculatedTotal.value) - eval(previouslySelectedRadioButton.value);

      // Save the current radio selection value.

      previouslySelectedRadioButton.value = eval(inputItem.value);

      // Add the current radio button selection value to the total.

      calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);

    }

	else { // Process check boxes.

      if (inputItem.checked == false) { // Item was uncheck. Subtract item value from total.

          calculatedTotal.value = eval(calculatedTotal.value) - eval(inputItem.value);

      } else { // Item was checked. Add the item value to the total.

          calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);

      }

    }


    // Total value should never be less than 0.

    if (calculatedTotal.value < 0) {

      InitForm();

    }


    // Return total value.

    return(formatCurrency(calculatedTotal.value));

  }

}


// Format a value as currency.

function formatCurrency(num) {

  num = num.toString().replace(/\$|\,/g,'');

  if(isNaN(num))

     num = "0";

  sign = (num == (num = Math.abs(num)));

  num = Math.floor(num*100+0.50000000001);

  cents = num%100;

  num = Math.floor(num/100).toString();

  if(cents<10)

      cents = "0" + cents;

  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)

      num = num.substring(0,num.length-(4*i+3)) + ',' + num.substring(num.length-(4*i+3));

  return (((sign)?'':'-') + '$' + num + '.' + cents);

}


// This function initialzes all the form elements to default values.

function InitForm() {

  // Reset values on form.

  document.selectionForm.total.value='$0';

  document.selectionForm.calculatedTotal.value=0;

  document.selectionForm.previouslySelectedRadioButton.value=0;


  // Set all checkboxes and radio buttons on form to unchecked.

  for (i=0; i < document.selectionForm.elements.length; i++) {

    if (document.selectionForm.elements[i].type == 'checkbox' | document.selectionForm.elements[i].type == 'radio') {

      document.selectionForm.elements[i].checked = false;

    }

  }

}

To jest kod javascript który zlicza dane i wyświetla sumę. Doszedłem do tego jak dodać input "text" i wszystko ładnie działa jeżeli jest jeden taki input, jezeli dodam drugi to pojawiają się komplikacje bo odejmuje poprzedni... i nie umiem sobie z tym poradzić. Potem chce dodać żeby każdy z tych inputów był mnożony przez jakąś liczbę, ale z tym powinienem sobie poradzić. Prosze o pomoc problem tyczy się tylko input "text". kod html

| Specialne zamówienie Wielkość dysku (GB): Ilość procesów: Medium $12.00 Large $15.00**Extra Toppings (only one selection allowed):** None Extra Cheese $1.00 Vegetarian $2.00 Meat $3.00 Your total is: |

[/code] [b]Problem rozwiązany zapomniałem dodać
[code]

:smiley: