romero: button in einer function erstellen und danach ausführen

hallöchen,

hab da wieder was.
vllt kann mir diesmal jemand helfen.

ich habe mittels einer function einen ausgabe-text erstellt.dieser ausgabe-text enthält aber buttons,welche eine funktion haben sollen.

function hallo()  
{...  
var output = '<center class="Folie"><img src=C:/test/Achtung.png width=30px height=25px> <b>ACHTUNG:</b><br>Wollen Sie wirklich separate Folien-Stückliste(n) anlegen?<br><br><input type="button" name="Bestätigung" value="Bestätigen" onClick="Folie()"></input> <input type="button" name="Bestätigung" value="Abbrechen" onClick="Folie()"></input></center>';  
var Folie_Meldung = document.getElementById( "Folie_Meldung" ).innerHTML = output;  
...}

die function hallo rufe ich mittels button auf (das geschieht in einem formular form name="test")

habe versucht nun über

function duda()  
{  
var kuckmal = document.test.Bestätigung.value;  
  
if( kuckmal = "Abbrechen" )  
{  
var output = Bestätigung;  
var msgs = document.getElementById( "msgs" ).innerHTML = output;  
}  
}

was auszulesen,aber das klappt irgendwie nicht.

will also,das die mit einer function aufgerufenen buttons,auch was bewirken,also das ich da was ausgelesen bekomme,das da ein ausgabetext erscheint.

kann mir da einer helfen?
lg romero

  1. Hallo,

    mit alert() kannst du deine variablen testen. ich bleibe dabei, dass ein verkürzen der fragen deinen probleme zuträglich wäre https://forum.selfhtml.org/?t=195315&m=1307169

    Gruß

    jobo

  2. Hi,

    function hallo()

    {...
    var output = '<center class="Folie"><img src=C:/test/Achtung.png width=30px height=25px> <b>ACHTUNG:</b><br>Wollen Sie wirklich separate Folien-Stückliste(n) anlegen?<br><br><input type="button" name="Bestätigung" value="Bestätigen" onClick="Folie()"></input> <input type="button" name="Bestätigung" value="Abbrechen" onClick="Folie()"></input></center>';
    var Folie_Meldung = document.getElementById( "Folie_Meldung" ).innerHTML = output;
    ...}

      
    du erstellst einen String, der HTML enthält (übrigens zum Teil ungültiges HTML), speicherst ihn als erstes in output. Als nächstes kopierst du ihn als HTML-Inhalt in ein Element mit der ID "Folie\_Meldung", und gleichzeitig noch in die Variable Folie\_Meldung.  
    Da beide Variablen lokal sind (durch die Deklaration mit var), werden sie auch beide beim Verlassen der Funktion umgehend entsorgt. Welcher Sinn steckt dahinter?  
      
    
    > var kuckmal = document.test.Bestätigung.value;  
    > if( kuckmal = "Abbrechen" )  
    > {  
      
    Eine erneute Zuweisung in der Klammer des if-Statements? Meintest du nicht eher einen Vergleich?  
      
    
    > var output = Bestätigung;  
    > var msgs = document.getElementById( "msgs" ).innerHTML = output;  
      
    Und das ist dieselbe Doppel-Kopieraktion wie oben, nur übersichtlicher.  
      
    
    > was auszulesen,aber das klappt irgendwie nicht.  
      
    Und "klappt irgendwie nicht" klappt hier irgendwie nicht. Wenigstens eine Beschreibung des Fehlers solltest du schon liefern können.  
      
    
    > will also,das die mit einer function aufgerufenen buttons,auch was bewirken,also das ich da was ausgelesen bekomme,das da ein ausgabetext erscheint.  
      
    Und wo liegt genau das Problem?  
      
    
    > kann mir da einer helfen?  
      
    Wobei?  
      
    Ciao,  
     Martin  
    
    -- 
    Die junge Ehefrau weint sichbei ihrer Mutter aus:  
    Er hat gesagt, ich soll mich zum Teufel scheren! - Und da kommst du ausgerechnet zu mir?!  
    
    
    1. Hi,

      function hallo()

      {...
      var output = '<center class="Folie"><img src=C:/test/Achtung.png width=30px height=25px> <b>ACHTUNG:</b><br>Wollen Sie wirklich separate Folien-Stückliste(n) anlegen?<br><br><input type="button" name="Bestätigung" value="Bestätigen" onClick="Folie()"></input> <input type="button" name="Bestätigung" value="Abbrechen" onClick="Folie()"></input></center>';
      var Folie_Meldung = document.getElementById( "Folie_Meldung" ).innerHTML = output;
      ...}

      
      >   
      > du erstellst einen String, der HTML enthält (übrigens zum Teil ungültiges HTML),  
      
      »»  
        
      wo enthält es ungültiges HTML? also er gibt genau das aus,was es ausgeben soll.wenn was fehlerhaft bzw ungültig ist,bitte ich sehr,die korrekte schreibweise zu posten.  
        
        
      
      > speicherst ihn als erstes in output. Als nächstes kopierst du ihn als HTML-Inhalt in ein Element mit der ID "Folie\_Meldung", und gleichzeitig noch in die Variable Folie\_Meldung.  
      
      »»  
      was ist denn daran falsch?ich dachte es wird so gemacht?wenn es ein fehler ist,dann bitte ich drum,das ihr mir sagt,wie ich es besser machen kann.denn das ist mein erster versuch,javascript in irgendeiner weise zu schreiben. habe nicht so die ahnung wie manch anderer hier,sorry.  
        
      ich habe das schon umgeschrieben,also kein  
      var output = "irgendwas";  
      var folie\_meldung = document.getElementById( "folie\_meldung" ).innerHTML = output;  
        
      sondern:  
        
      var folie\_meldung = document.getElementById( "folie\_meldung" ).innerHTML = "irgedwas";  
        
        
      
      > Da beide Variablen lokal sind (durch die Deklaration mit var), werden sie auch beide beim Verlassen der Funktion umgehend entsorgt. Welcher Sinn steckt dahinter?  
      
      »»  
        
      der sinn besteht darin,das diese nur zum "anschauen" sind. die eigentlichen variablen sollen zum späteren zeitpunkt an andere funktionen mittels return übermittelt werden.  
      
      >   
      > > var kuckmal = document.test.Bestätigung.value;  
      > > if( kuckmal = "Abbrechen" )  
      > > {  
      >   
      > Eine erneute Zuweisung in der Klammer des if-Statements? Meintest du nicht eher einen Vergleich?  
      >   
      > > var output = Bestätigung;  
      > > var msgs = document.getElementById( "msgs" ).innerHTML = output;  
      >   
      > Und das ist dieselbe Doppel-Kopieraktion wie oben, nur übersichtlicher.  
      >   
      > > was auszulesen,aber das klappt irgendwie nicht.  
      >   
      > Und "klappt irgendwie nicht" klappt hier irgendwie nicht. Wenigstens eine Beschreibung des Fehlers solltest du schon liefern können.  
      >   
      > > will also,das die mit einer function aufgerufenen buttons,auch was bewirken,also das ich da was ausgelesen bekomme,das da ein ausgabetext erscheint.  
      >   
      > Und wo liegt genau das Problem?  
      
      »»  
      ich hab das ein wenig anders gelöst.habe 2 verschiedene onclicks eingefügt,also zum einem onclick="bestätigung()",zum anderem onclick="abbrechen()".  
        
      diese werden dann ausserhalb der function übernehmen ausgeführt.  
      das klappt super.wollte das ich mittels einer funktion beide onclicks zusammen abfrage.  
      
      >   
      > > kann mir da einer helfen?  
      >   
      > Wobei?  
      >   
        
      wie kriege ich mehrere variablen mittels return in eine andere funktion?  
      weiß wie man eine bekommt,aber nicht wie man mehr als eine weiter verwendet.  
        
      das bei einer variablen.hab irgendwie gelesen das man das in ein array schreibt.aber wie?  
        
        
      function hallo()  
      {...  
      return wert\_1;  
      ...}  
        
      function duda()  
      {...  
      var ausgabe = hallo( wert\_1 );  
      ...}  
        
        
      lg romero
      
      1. Hallo,

        ich möchte nicht, dass das jetzt als Vorwurf oder gar als Arroganz rüberkommt, aber ich habe den Eindruck, dass dir noch wesentliche Grundlagen zum Verständnis nicht nur speziell von Javascript, sondern allgemein der Programmierkunst fehlen. Beispielsweise das Konzept von Funktionen und lokalen bzw. globalen Variablen. Ich ziehe den Schluss mal vor:

        wie kriege ich mehrere variablen mittels return in eine andere funktion?

        Die bekommst Variablen (genauer gesagt: Werte) mit return nicht "in eine andere Funktion", sondern zunächst mal nur aus der Funktion heraus, in der sie entstehen.

        weiß wie man eine bekommt,aber nicht wie man mehr als eine weiter verwendet.

        Die Variable, die du mit return zurückgibst, kann selbst ein Array oder ein Objekt sein. Ein triviales Beispiel: Wir schreiben eine Funktion, die zwei komplexe Zahlen (bestehend aus Real- und Imaginärteil) addieren und das Ergebnis zurückliefern soll.

        Methode 1: Komplexe Zahlen als Arrays mit 2 Elementen

        function KomplexSumme(a, b)
         { var Summe = [];              // alternative Schreibweise für new Array()

        Summe[0] = a[0] + b[0];      // Realteil
           Summe[1] = a[1] + b[1];      // Imaginärteil

        return Summe;
         }

        Methode 2: Komplexe Zahlen als Objekte mit den Eigenschaften Re und Im

        function KomplexSumme(a, b)
         { var Summe = {};              // alternative Schreibweise für new Object()

        Summe.Re = a.Re + b.Re;      // Realteil
           Summe.Im = a.Im + b.Im;      // Imaginärteil

        return Summe;
         }

        Das sollte dir mögliche Wege aufzeigen, wie eine Funktion mehrere Werte zurückgeben kann. Wirklich sinnvoll ist das jedoch nur, wenn diese Werte miteinander ein sinnvolles Ganzes ergeben.

        function hallo()
        {...
        return wert_1;
        ...}

        function duda()
        {...
        var ausgabe = hallo( wert_1 );
        ...}

        Dieser Ausschnitt ist widersprüchlich: Du rufst deine Funktion hallo() auf und übergibst ihr einen Parameter, obwohl die Funktion ohne Parameter deklariert ist. Außerdem existiert wert_1 offensichtlich innerhalb von hallo(), nicht aber in duda(). Jedenfalls nicht offensichtlich.

        function hallo()

        {...
        var output = '<center class="Folie"><img src=C:/test/Achtung.png width=30px height=25px> <b>ACHTUNG:</b><br>Wollen Sie wirklich separate Folien-Stückliste(n) anlegen?<br><br><input type="button" name="Bestätigung" value="Bestätigen" onClick="Folie()"></input> <input type="button" name="Bestätigung" value="Abbrechen" onClick="Folie()"></input></center>';

          
        
        > > du erstellst einen String, der HTML enthält (übrigens zum Teil ungültiges HTML),  
        > wo enthält es ungültiges HTML?  
          
        Der HTML-String enthält ein img-Element, in dem der Wert des src-Attributs nicht in Anführungszeichen steht (obwohl er muss); außerdem enthält er für die Attribute width und height die ungültigen Werte 30px bzw. 25px. Merke: Die HTML-Attribute width oder height geben immer Pixel an (oder Prozent), die Einheit px ist hier ein Fehler.  
          
        
        > > > `var Folie_Meldung = document.getElementById( "Folie_Meldung" ).innerHTML = output;`{:.language-javascript}  
          
        
        > > speicherst ihn als erstes in output. Als nächstes kopierst du ihn als HTML-Inhalt in ein Element mit der ID "Folie\_Meldung", und gleichzeitig noch in die Variable Folie\_Meldung.  
        > was ist denn daran falsch?  
          
        Es ist nicht falsch, nur sehr umständlich. Dein Code in Kurzform:  
          
          var x = "foo";  
          var y = getElementById().innerHTML = x;  
          
        Dieser Code erzeugt zwei lokale Variablen, die beide denselben Wert bekommen (also ist mindestens eine überflüssig), und die zumindest in dem Ausschnitt, den du hier gezeigt hast, beide nicht verwendet werden.  
          
        
        > ich habe das schon umgeschrieben  
        > var folie\_meldung = `document.getElementById( "folie_meldung" ).innerHTML = "irgedwas";`{:.language-javascript}  
          
        Gut. Und was ist mit folie\_meldung? Brauchst du den Wert im weiteren Verlauf des Scripts nochmal? Wenn ja, gut.  
          
        
        > > Da beide Variablen lokal sind (durch die Deklaration mit var), werden sie auch beide beim Verlassen der Funktion umgehend entsorgt. Welcher Sinn steckt dahinter?  
        > der sinn besteht darin,das diese nur zum "anschauen" sind.  
          
        "Anschauen" heißt Debugging?  
        Gut gedacht, aber ich rate davon ab, für Debugging-Zwecke zusätzliche Variablen ins Leben zu rufen. Untersuche die, die sowieso schon existieren, sonst besteht die Gefahr, durch die zusätzliche Zuweisung zusätzliche Fehler einzuschleusen oder einen anderen Wert anzuschauen als den, mit dem man tatsächlich weiterarbeitet.  
          
        
        > ich hab das ein wenig anders gelöst.habe 2 verschiedene onclicks eingefügt,also zum einem onclick="bestätigung()",zum anderem onclick="abbrechen()".  
          
        Okay. Ich hatte mich schon gewundert, dass im Originalcode beide Buttons dieselbe Funktion aufrufen.  
          
        
        > wollte das ich mittels einer funktion beide onclicks zusammen abfrage.  
          
        Das kannst du tun - aber dann musst du deiner Funktion einen Parameter übergeben, der beschreibt, was zu tun ist (Abbrechen oder Bestätigen).  
          
        So long,  
         Martin  
        
        -- 
        Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.  
        
        
        1. hallöchen

          Hallo,

          ich möchte nicht, dass das jetzt als Vorwurf oder gar als Arroganz rüberkommt, aber ich habe den Eindruck, dass dir noch wesentliche Grundlagen zum Verständnis nicht nur speziell von Javascript, sondern allgemein der Programmierkunst fehlen. Beispielsweise das Konzept von Funktionen und lokalen bzw. globalen Variablen. Ich ziehe den Schluss mal vor:

          »»

          da hast du nicht ganz so unrecht.ich versuche mich grad in eine der vielen programmiersprachen ( halt javascript ) reinzufuchsen. muss natürlich zugeben,das mir einige grundlagen diesbezüglich fehlen,was nicht heißt,das ich nicht gewillt bin,dies zu schaffen.
          und hoffe auf entsprechende hilfe,bei bestimmten sachverhalten.

          wie kriege ich mehrere variablen mittels return in eine andere funktion?

          Die bekommst Variablen (genauer gesagt: Werte) mit return nicht "in eine andere Funktion", sondern zunächst mal nur aus der Funktion heraus, in der sie entstehen.

          weiß wie man eine bekommt,aber nicht wie man mehr als eine weiter verwendet.

          Die Variable, die du mit return zurückgibst, kann selbst ein Array oder ein Objekt sein. Ein triviales Beispiel: Wir schreiben eine Funktion, die zwei komplexe Zahlen (bestehend aus Real- und Imaginärteil) addieren und das Ergebnis zurückliefern soll.

          Methode 1: Komplexe Zahlen als Arrays mit 2 Elementen

          function KomplexSumme(a, b)
          { var Summe = [];              // alternative Schreibweise für new Array()

          Summe[0] = a[0] + b[0];      // Realteil
             Summe[1] = a[1] + b[1];      // Imaginärteil

          return Summe;
          }

          Methode 2: Komplexe Zahlen als Objekte mit den Eigenschaften Re und Im

          function KomplexSumme(a, b)
          { var Summe = {};              // alternative Schreibweise für new Object()

          Summe.Re = a.Re + b.Re;      // Realteil
             Summe.Im = a.Im + b.Im;      // Imaginärteil

          return Summe;
          }

          Das sollte dir mögliche Wege aufzeigen, wie eine Funktion mehrere Werte zurückgeben kann. Wirklich sinnvoll ist das jedoch nur, wenn diese Werte miteinander ein sinnvolles Ganzes ergeben.

          danke dafür.müsste ich versuchen,das dann in meins zu berücksichtigen.

          function hallo()
          {...
          return wert_1;
          ...}

          function duda()
          {...
          var ausgabe = hallo( wert_1 );
          ...}

          Dieser Ausschnitt ist widersprüchlich: Du rufst deine Funktion hallo() auf und übergibst ihr einen Parameter, obwohl die Funktion ohne Parameter deklariert ist. Außerdem existiert wert_1 offensichtlich innerhalb von hallo(), nicht aber in duda(). Jedenfalls nicht offensichtlich.

          wie müsste das dann richtig heißen?etwa so?oder bitte die korrekte schreibweise geben.
          function hallo( wert_1 )
          {...
          return wert_1;
          ...}

          function duda( wert_1 )
          {...
          var ausgabe = hallo( wert_1 );
          ...}

          function hallo()

          {...
          var output = '<center class="Folie"><img src=C:/test/Achtung.png width=30px height=25px> <b>ACHTUNG:</b><br>Wollen Sie wirklich separate Folien-Stückliste(n) anlegen?<br><br><input type="button" name="Bestätigung" value="Bestätigen" onClick="Folie()"></input> <input type="button" name="Bestätigung" value="Abbrechen" onClick="Folie()"></input></center>';

          
          >   
          > > > du erstellst einen String, der HTML enthält (übrigens zum Teil ungültiges HTML),  
          > > wo enthält es ungültiges HTML?  
          >   
          > Der HTML-String enthält ein img-Element, in dem der Wert des src-Attributs nicht in Anführungszeichen steht (obwohl er muss); außerdem enthält er für die Attribute width und height die ungültigen Werte 30px bzw. 25px. Merke: Die HTML-Attribute width oder height geben immer Pixel an (oder Prozent), die Einheit px ist hier ein Fehler.  
          >   
            
          ok werd es ausbessern.  
          
          > > > > `var Folie_Meldung = document.getElementById( "Folie_Meldung" ).innerHTML = output;`{:.language-javascript}  
          >   
            
          
          > > ich habe das schon umgeschrieben  
          > > var folie\_meldung = `document.getElementById( "folie_meldung" ).innerHTML = "irgedwas";`{:.language-javascript}  
          >   
          > Gut. Und was ist mit folie\_meldung? Brauchst du den Wert im weiteren Verlauf des Scripts nochmal? Wenn ja, gut.  
          >   
            
          hab es komplett geänder auf:  
          document.getElementById( "folie\_meldung" ).innerHTML = "irgedwas";  
            
          
          > > wollte das ich mittels einer funktion beide onclicks zusammen abfrage.  
          >   
          > Das kannst du tun - aber dann musst du deiner Funktion einen Parameter übergeben, der beschreibt, was zu tun ist (Abbrechen oder Bestätigen).  
          >   
            
          etwa so?z.b.:  
          onclick = "Folie\_Hinweiss( Bestätigen )";  
          onclick = "Folie\_Hinweiss( Abbrechen )";  
            
          und dann so aufrufen?  
            
          function Folie\_Hinweiss( Bestätigen );  
          {...  
          irgendwas;  
          ...}  
            
          function Folie\_Hinweiss( Abbrechen );  
          {...  
          irgendwas;  
          ...}  
            
          oder wie wird das da gemacht?  
            
          lg romero