kleines Javascript problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • kleines Javascript problem

    Mittach kameraden des Pixeligen vergnügens.

    Ich habe eine Tabelle die aus einer unbestimmten anzahl von input werten ein endergebniss errechnen soll.

    Nachdem ich mich über die verwendung von " + " in js gewundert habe, hab ich mir nen script gezogen:

    PHP-Code:

      
    function sumArray(array)
      {
        var 
    sum=0;
        for(var 
    x=0x<array.lengthx++){
          
    sum += parseInt(array[x])
        }
        return 
    sum;
      }

     function 
    getTheValue(prefix)
      {
        var 
    parts = new Array();
        var 
    inputs document.getElementsByTagName('input');
        for(var 
    x=0x<=inputs.lengthx++){ // FALSCH sollte x=1 sein
      
          
    if(inputs[x-1].name == (prefix+x)){
              
    alert('' +inputs[x-1].value ''); // GIBT 0 aus
              
    parts.push(inputs[x-1].value);
            
    inputs[x-1].onchange = new Function("getTheValue('"+prefix+"')");
          }
        }
        
        
    document.test.sum.value sumArray(parts);
      } 


    Leider bekomm ich den blöden fehler "name" ist NULL oder kein objekt?
    Wieso denn das? Der müsste doch die ganzen inputs in ein array ein lesen oder nich?

    Gruss timepoint5

    EDIT:


    Habs von Hier: http://www.tutorials.de/tutorials132177.html

    Zuletzt geändert von timepoint5; 04.12.2003, 15:02.
    Möglich ist alles!

  • #2
    inputs[x-1] wäre beim ersten durchlauf => inputs[0-1], schätze hier ist das problem.
    Kissolino.com

    Kommentar


    • #3
      Danke für die antwort wurzel,

      Ich hab da was falsch gemacht, natürlich ist x=0 nicht x=1, trotzdem, das ändert leider nix...

      Gruss
      Möglich ist alles!

      Kommentar


      • #4
        hmm, hab mir den code mal 1:1 copiert und fluppt einwandfrei.

        hast du anderweitig änderungen vorgenommen?
        alert() geht bei mir auch
        Kissolino.com

        Kommentar


        • #5
          Ei ei jetzt hab ich ich mal alles unwichtige weggeschmissen und den fehler gefunden, leider bringt mich das im moment nicht weiter.

          Gedacht ist, daten werden in 2 felder eingegeben, die werden per js addiert und in ein feld hineingeschrieben.

          Am ende des forulars gibts dann noch ein feld das die summe der ganzen addierten felder enthalten soll. beides scheint aber zu gehen?

          Hier mal ein BSP:
          PHP-Code:


          <html>
          <
          head>
            <
          script type="text/javascript">
            
            function 
          sumArray(array)
            {
              var 
          sum=0;
              for(var 
          x=0x<array.lengthx++){
                
          sum += parseInt(array[x])
              }
              return 
          sum;
            }
            
            
            function 
          getTheValue(prefix)
            {
              var 
          parts = new Array();
              var 
          inputs document.getElementsByTagName('input');
              for(var 
          x=1x<=inputs.lengthx++){
                if(
          inputs[x-1].name == (prefix+x)){
                  
          parts.push(inputs[x-1].value);
                  
          inputs[x-1].onchange = new Function("getTheValue('"+prefix+"')");
                }
              }
              
          document.test.summe.value sumArray(parts);
            }
           
            </
          script>
          </
          head>
          <
          body onload="getTheValue('teil_')">

          <
          form action="#" method="post" enctype="multipart/form-data" target="self"  name="test">
          <
          input type="text" name="ef_er_stk" value="" size="12" class="insertLight" >




          <
          input type="text" name="ef_er_pr" value="" size="12" class="insertLight" onKeyUp="document.test.teil_1.value = document.test.ef_er_stk.value * document.test.ef_er_pr.value;"><br>



              <
          input type="text" name="teil_1" value="0" /><br>
              <
          input type="text" name="teil_2" value="0" /><br>
              <
          input type="text" name="teil_3" value="0" /><br>  
              <
          input type="text" name="teil_4" value="0" /><br>
              <
          input type="text" name="teil_5" value="0" /><br>
              <
          input type="text" name="teil_6" value="0" /><br>
              <
          input type="text" readonly name="summe" />
            </
          form>


            
          </
          body>
          </
          html
          Entfernt man die beiden obersten felder läufts wieder wie geschmiert?

          Gruss timepoint5
          Möglich ist alles!

          Kommentar


          • #6
            setz die beiden felder mal vor die summe, dann gehts wieder

            nehme mal an, die werden später als hidden eingesetzt?
            sonst hast du ein problem ... und ich keine lösung
            Kissolino.com

            Kommentar


            • #7
              Ja gibts denn sowas`?

              Sh*t, denn das sollten leider keine hiddens werden. Ich such mal noch ein bisschen rum, sonst werd ichs mit php machen müssen :-/

              Vielleicht geht das nicht weil onChange nur Durch eine User eingabe kommen kann und nicht durch einen event händler? Obwohl wenn man dann manuel im feld was änderen würde müste es dann ja gehen..

              Keine Ahung, trotzdem vielen dank wurzel!
              Möglich ist alles!

              Kommentar


              • #8
                wenn du die felder "sichtbar" brauchst, pack sie doch in divs, dann
                kannst du sie positionieren wo du willst ... aus der abteilung "nicht
                schön, aber selten"
                Kissolino.com

                Kommentar


                • #9
                  Gute idee aber leider wäre das ein zu grosser aufwand. Die Tabellen sind nämlich relativ gross und werden dynamisch erstellt.
                  Das ist eh ein intranet ding, da kann man einen berechnen klick schon verlangen :-)
                  Möglich ist alles!

                  Kommentar


                  • #10
                    Hätte vielleicht jemand eine idee wie man es mit JS realisieren kann?

                    Vielen Dank!
                    timepoint5
                    Möglich ist alles!

                    Kommentar


                    • #11
                      Falls jemand die Suchfunktion nützen sollte, so kann mans machen:

                      In dem letzten auszufüllenden feld( oder wo man will ) wird per Eventhandler eine funktion getriggert die restlichen felder zusammen gezählt.
                      Zusammen zählen von vars funktioniernt in JS Crossbrowser tauglich übrigens mit eval(name.der.variable + name.der.variable)


                      thanks timepoint5
                      Möglich ist alles!

                      Kommentar

                      Lädt...
                      X