Hans Huber: JavaScript aufruf einer Methode

Hi,

ich rufe eine Methode so auf:

var competition = $(event.target).text();
onclick="deleteCompetition(' + competition + ')"

die Methode schaut so aus:

function deleteCompetition(competition) {
             alert('deleteCompetition: ' + competition);
            }

Das funkoniert so nicht.
Weiß jemand wie ich das machen kann.?

Besten Dank,
Hans

  1. var competition = $(event.target).text();
    onclick="deleteCompetition(' + competition + ')"

    Die zweite Zeile ist ganz schön verwurschtelt, ich vermute, dass du folgendes machen wolltest.

      
    onclick = function(){  
       deleteCompetition(competition);  
    };  
    
    

    Ich vermute, dass dein Problem damit allerdings noch nicht gelöst ist.
    Was hast du denn vor? Was soll überhaupt passieren?

    function deleteCompetition(competition) {
                 alert('deleteCompetition: ' + competition);
                }

    Hieran ist nichts auszusetzen.

    1. var competition = $(event.target).text();
      // wenn competition z.B. den Text "Hallo" representiert
      onclick="deleteCompetition(' + competition + ')"

      die Methode schaut so aus:

      function deleteCompetition(competition) {
                   alert('deleteCompetition: ' + competition);
                  }

      Wenn competition z.B. "Hallo" ist bekomme ich folgenden Fehler in der Fehlerkonsole des Browsers:

      Hall is not defined.

      Der Browser representiert also den Text "Hallo" also Variable -> und das ist mein Problem.
      Gibt es da eine Lösung dafür?

      lg
      Hans

      1. Der Browser representiert also den Text "Hallo" also Variable -> und das ist mein Problem.
        Gibt es da eine Lösung dafür?

        Syntaxfehler bereinigen.
        Du hast uns immernoch nicht verstanden, was du eigentlich erreichen möchtest.

        1. var competition = $(event.target).text();
          onclick="deleteCompetition(' + competition + ')"

          die Methode schaut so aus:

          function deleteCompetition(competition) {
                       alert('deleteCompetition: ' + competition);
                      }

          Ich möchte erreichen, dass wenn competition = "Hallo" ist, beim alertFenster auch deleteCompetition: Hallo ausgegeben wird -> Momentan bekomm ich aber nur einen Fehler - eben Hallo is not defined

          1. Ich möchte erreichen, dass wenn competition = "Hallo" ist, beim alertFenster auch deleteCompetition: Hallo ausgegeben wird -> Momentan bekomm ich aber nur einen Fehler - eben Hallo is not defined

            Hier kommen wir der Sache schon näher, aber du hast nur einen Teil deines Problems beschrieben. Aus dem "onclick" errate ich, dass du irgendwas mit Klicken machen möchtest.

            Zum Beispiel:
            Ich habe 30 Button-Elemente auf meiner Seite, beim Anklicken eines Buttons, soll der jeweilige Klartext, der sich zwischen den Button-Tags befindet, ausgegeben werden.

    2. Tipp ins Blaue (unter der Annahme, dass du jQuery nutzt):

        
      $("*").click( function( event ){  
         deleteCompetition( $(event.target).text() );  
      });  
      
      

      Wobei "*" durch einen Selektor deiner Wahl zu ersetzen wäre.

  2. Hi,

    var competition = $(event.target).text();
    onclick="deleteCompetition(' + competition + ')"

    Poste bitte den Originalcode (z.B. ein komplettes Beispiel), ich kann mir nicht vorstellen, dass das hier in irgendeiner Weise funktionieren kann.

    Wenn du sowas schreibst, denk daran, dass du gültigen JavaScript-Code erzeugen musst. Dazu gehören auch Stringbegrenzer. onclick muss am Ende einen String enthalten, der so aussieht: deleteCompetition("Hallo"). Du erzeugst deleteCompetition(Hallo). Die Variable Hallo ist, wie der Browser korrekt bemerkt, unbekannt.

    Der (vollkommen korrekte und zu empfehlende) Trick, nicht JavaScript-Code zu erzeugen, sondern dem click-Handler direkt eine Funktion zu übergeben, wurde schon gegeben:

    onclick = function() {  
      deleteCompetition(competition);  
    };
    

    Dann musst du dir auch nicht über das Escaping u.ä. Gedanken machen. Denn wenn du deinen Ansatz weiterverfolgst, wirst du spätestens ein Problem bekommen, wenn competition deinen Stringbegrenzer enthält (' oder "). Dann musst du kompletten Kontextwechsel beachten.

    Bis die Tage,
    Matti