Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wert erhöht sich nur einmal, aber Ausgangswert wird nie überschrieben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Wert erhöht sich nur einmal, aber Ausgangswert wird nie überschrieben

    Hallo Leute,

    sollte der Thread Titel nicht wirklich glücklich gewählt sein, dann gebt mir bitte einen Tipp wie ich ihn besser formulieren könnte und ich tue das sofort, mir ist nur kein besserer eingefallen.

    Da ich in der Firma wo ich bald Praktikum mache auch viel mit JS zu tun haben werde, will ich bevor es los geht schon einmal ein wenig lernen damit ich nicht bei 0 da beginne.

    Also habe ich mal was versucht, was leider nur etwas verunglückt klappt.

    Hier erst mal der Code und dann die Erklärung dazu.

    Ich packe alles in PHP Tags da Html, Js und PHP im Code vorkommt.

    PHP-Code:
    <?php
    error_reporting
    (E_ALL E_STRICT);
    ini_set("display_errors"TRUE);

    session_start();

    $arr_Values = array(113213);

    //$int_Wert1 = 113;
    //$int_Wert2 = 213;
    ?>

    <html>
    <head>

    <script language="javascript">
        
        window.onload = function (){
            
            <?php
            
    foreach ( $arr_Values as $arr_Key => $arr_Value ) {
            
    ?>
                
                document.getElementById('edit_<?php echo $arr_Value?>').value = <?php echo $arr_Value?>;
                
            <?php
            
    }
            
    ?>
        }
        
        function int_EditUp(val, idUp, idValue){
            
            var val_Data = val;
                
            if ( document.getElementById(idUp) ) {
                
                val_Data++;
                
                document.getElementById(idValue).value = val_Data;
            }
        }
        
        function int_EditDown(val, idDown, idValue){
            
            var val_Data = val;
                
            if ( document.getElementById(idDown) ) {
                
                val_Data--;
                
                document.getElementById(idValue).value = val_Data;
            }
        }
        
    </script>

    </head>

    <body>

        <form action="" method="post" id="form1">
            
            <?php
            
    foreach ( $arr_Values as $arr_Key => $arr_Value ) {
            
    ?>
            
                <input type="button" name="down" value="<" id="down_<?php echo $arr_Value?>" onclick="int_EditDown(<?php echo $arr_Value?>, 'down_<?php echo $arr_Value?>', 'edit_<?php echo $arr_Value?>')" />
                <input type="text" name="wert_<?php echo $arr_Value?>" style="width: 40px; text-align: center;" id="edit_<?php echo $arr_Value?>" />
                <input type="button" name="up" value=">" id="up_<?php echo $arr_Value?>" onclick="int_EditUp(<?php echo $arr_Value?>, 'up_<?php echo $arr_Value?>', 'edit_<?php echo $arr_Value?>')" />
                
                <br />
                
            <?php
            
    }
            
    ?>

        </form>

    </body>
    </html>
    Also, es werden da Werte zugewiesen und die werden per Js in die entsprechenden Felder vorgeladen, dass klappt auch super.

    So dann soll man mit Pfeilbuttons die Werte herauf und herab setzen können, dass wiederum klappt nur einmal und das aber auch nicht richtig. Da ich grad eben nicht ganz so einen mega Text schreiben will und am Ende in Gefahr laufe mich unverständlich auszudrücken poste ich hier einfach mal einen Link wo ihr das testen könnt.

    Es soll möglich sein das wenn ich zum Beispiel auf den Pfeil nach rechts drücke der Werte jedesmal um 1 erhöt wird und wenn ich wieder auf den Pfeil nach links drücke soll der erhöhte Wert wieder so oft runter gezählt werden wie man den Button drückt.

    Mal ganz krzes Beispiel zum Verständnis.

    Code:
    wert = 113
    
    3 mal druck button > , dann wert erhöht um drei = 116
    
    1 mal druck button < , dann wert 116 erniedrigt um 1 = 115
    Ich hoffe das macht das ganze etwas deutlicher. Momentan wird funktioniert nur ein einziger Button Druck in beide Richtungen, aber der Ausgangswert wird nie verändert, dass könnt ihr an dem Beispiel selber sehen.

    Hier der Link http://www.lit-web.de/js_test/

    Ich danke für jede Hilfe, denn ich weis nicht warum die Ausgangsvariable nie überschrieben wird, aber das soll sie ja letztenendes.

    Gruß Litter

    EDIT

    Ich habe jetzt zum Test aber mal einen Submit Button gemacht und lasse mir da die Werte ausgeben, die sind aber auch verändert, so richtig verstehe ich das ganze nicht.

  • #2
    Code:
    int_EditUp(<?php echo $arr_Value; ?>,
    Du übergibst immer den Startwert an die Funktion. Folglich inkrementierst/dekrementierst du immer denselben Wert um 1. Übergib doch stattdessen den aktuellen Wert aus der Textbox an die Funktion.

    Kommentar


    • #3
      Zitat von litterauspirna Beitrag anzeigen
      Code:
      <input type="button" onclick="int_EditDown(113, 'down_113', 'edit_113')" id="down_113" value="&lt;" name="down">
      Du übergibst hier bei jedem Aufruf der Funktion erneut den Wert 113 für den Parameter val.

      Momentan wird funktioniert nur ein einziger Button Druck in beide Richtungen, aber der Ausgangswert wird nie verändert
      Jeder Buttondruck „funktioniert“, und jeder erhöht/erniedrigt den Ausgangswert um eins.
      Dass von dir jedes mal wieder neu der gleiche Ausgangswert übergeben wird, dafür können die Buttons nichts.

      Ich danke für jede Hilfe, denn ich weis nicht warum die Ausgangsvariable nie überschrieben wird
      Die 113 im oben zitierten Code ist überhaupt keine Variable.


      Wenn du eh schon den Startwert als value in die Inputfelder hineinschreibst - wieso nimmst du dann nicht gleich das (aktuelle) value in deiner Funktion, und rechnest da eins drauf bzw. ziehst eins ab ...?

      (Dann müsstest du nur noch darauf reagieren, dass der Benutzer vielleicht was anderes als einen Integerwert ins Feld hineintippt, Stichwort parseInt, bzw. das gleich unterbinden, in dem du das Feld auf readonly setzt.)

      Kommentar


      • #4
        Ok du willst mir also sagen das ich mir die zwei Funktionen zum hoch und runter schalten des Wertes sparen kann, habe ich das richtig verstanden?

        Und demzufolge das hoch un runter schalten in der ersten Funktion mit unterbringen soll oder wie?

        Du übergibst immer den Startwert an die Funktion. Folglich inkrementierst/dekrementierst du immer denselben Wert um 1. Übergib doch stattdessen den aktuellen Wert aus der Textbox an die Funktion.
        Wie übergebe ich das? Das sind meine ersten Einstiege in JS, leider tue ich mich ein enig schwer.

        Gruß und Danke

        Kommentar


        • #5
          Ok du willst mir also sagen
          Wenn ich ChrisB richtig verstanden habe, ist es das, was ich geschrieben habe, in ausführlich.

          Wie übergebe ich das?
          Anstatt die PHP-Variable hier einzutragen:
          Code:
          int_EditUp(<?php echo $arr_Value; ?>,
          solltest du einfach den Wert aus dem Textfeld mit Javascript auslesen und dann als 1. Parameter übergeben.

          Kommentar


          • #6
            Besten Dank, das hat mir geholfen und nun funktioniert es wie es soll.

            Hier der code für die, die das vieleicht auch mal brauchen.

            PHP-Code:
            <?php
            error_reporting
            (E_ALL E_STRICT);
            ini_set("display_errors"TRUE);

            session_start();

            $arr_Values = array(113213);

            if ( isset( 
            $_POST['send'] ) ) {

                unset(
            $_POST['send']);
                
                foreach ( 
            $_POST as $key => $val ) {
                    
                    echo 
            $val.'<br>';
                }
            }
            ?>

            <html>
            <head>

            <script language="javascript">
                
                window.onload = function (){
                    
                    <?php
                    
            foreach ( $arr_Values as $arr_Key => $arr_Value ) {
                    
            ?>
                        
                        document.getElementById('edit_<?php echo $arr_Value?>').value = <?php echo $arr_Value?>;
                        
                    <?php
                    
            }
                    
            ?>
                }
                
                function int_EditUp(val, idUp, idValue){
                    
                    var val_Data = val;
                        
                    if ( document.getElementById(idUp) ) {
                        
                        val_Data++;
                        
                        document.getElementById(idValue).value = val_Data;
                    }
                }
                
                function int_EditDown(val, idDown, idValue){
                    
                    var val_Data = val;
                        
                    if ( document.getElementById(idDown) ) {
                        
                        val_Data--;
                        
                        document.getElementById(idValue).value = val_Data;
                    }
                }
                
            </script>

            </head>

            <body>

                <form action="" method="post" id="form1">
                    
                    <?php
                    
            foreach ( $arr_Values as $arr_Key => $arr_Value ) {
                    
            ?>
                    
                        <input type="button" name="down" value="<" id="down_<?php echo $arr_Value?>" onclick="int_EditDown(document.getElementById('edit_<?php echo $arr_Value?>').value, 'down_<?php echo $arr_Value?>', 'edit_<?php echo $arr_Value?>')" />
                        <input type="text" name="wert_<?php echo $arr_Value?>" style="width: 40px; text-align: center;" id="edit_<?php echo $arr_Value?>" />
                        <input type="button" name="up" value=">" id="up_<?php echo $arr_Value?>" onclick="int_EditUp(document.getElementById('edit_<?php echo $arr_Value?>').value, 'up_<?php echo $arr_Value?>', 'edit_<?php echo $arr_Value?>')" />
                        
                        <br />
                        
                    <?php
                    
            }
                    
            ?>
                    <br /><br />
                    <input type="submit" name="send" value="Test" />

                </form>

            </body>
            </html>
            Es lag wirklich nur daran das ich den falschen Wert übergeben habe.

            Ich muss da an das geschreibesel mit JS erst mal gewöhnen.

            Dankeschön.

            Kommentar

            Lädt...
            X