Kruimel: <input type="button"...> mit onmouseup in einer Tabelle

Hallo Leute,

Ich habe vor ein paar Tagen angefangen mal etwas mit JavaScript und Ajax zu programmieren. Davor nur mit HTML, MySQL und PHP.

Momentan bin ich dabei ein paar Funktionen zu basteln um die Webseite einfacher zu warten. Mein Problem liegt jetzt bei der Seite um die verschiedenen Dateien der Website zu verändern... Also der Inhalt der Website.
Dazu hab ich jetzt eine Seite gebastelt wo man dann in einem Input die gewüschte Kategorie eintippt welcher die zu verändernde Datei angehört. Das wird dann alles schön per AJAX, JavaScript, PHP und MySQL aus der Datenbank geladen und in einer Tabelle per jquery ausgegeben.

Nun möchte ich dass in jeder Zeile ein button erscheint, oder auch zum Link wird, geht beides, und wenn man darauf klickt der Inhalt der Datei in den WYSIWYG Editor geladen wird...
Der letztere Teil, also in den WYSIWYG Editor sollte noch klappen. Der Button erscheinenlassen klappt soweit auch.

Das Problem ist jetzt aber dass wenn ich den Code:
<input type="button" value="&auml;ndern" onmouseup="gotChoice('Hallo')"/>

ausserhalb des JavaScripts und der Tabelle platziere, dass geht alles reibungslos. Sobald ich den aber folgendermassen ins JavaScript einbinde, passiert nix mehr...

  
$("table").append("<tr><td>"+update2[3]+"</td><td>"+update2[1]+"</td><td>"+update2[2]+"</td><td><input type='button' value='<---' onclick='document.gotChoice('Hallo')'></td></tr>");

Hier nochmals alle Teile des Codes wovon ich denke dass sie wichtig sein könnten oder sind:

Die Funktion welche die Tabelle schreibt:
(Das "Hallo" welches jetzt mit goChoice() übergeben wird, soll später zu update2[2] werden, darin steht nämlich der Pfad zur Datei.
update2[1] enthält den Namen, update2[3] die Kategorie der Datei)

  
function writetext(){  
    var update2 = new Array();  
    $("table").empty();  
  $("table").append("<tr><td><b>Kategorie</b></td><td><b>Name</b></td><td><b>Speicherort</b></td></tr>");  
    for (var i=0; i<=update.length-2; i++){  
   update2 = update[i].split("##");  
      $("table").append("<tr><td>"+update2[3]+"</td><td>"+update2[1]+"</td><td>"+update2[2]+"</td><td><input type='button' value='<---' onclick='document.gotChoice('Hallo')'></td></tr>");  
    }  
  }  

Und die Funktion welche aufgerufen werden sollte bei einem Klick auf den Button oder Link in der Tabelle (vorläufig nur ein Alert um zu testen):

  
  function gotChoice(FileName)  
 {  
  alert (FileName);  
  }  

und dann noch den kleinen HTML Teil der Tabelle (und obendran noch den Button zu testzwecken der funktioniert):

  
<input type="button" value="&auml;ndern" onmouseup="gotChoice('Hallo')"/>  
  
<table width=600>  
<tr><td><b>Kategorie</b></td><td><b>Name</b></td><td><b>Speicherort</b></td></tr>  
</table>  

Ich hoffe ihr könnt mich aufklären warum das so nicht funktioniert. Es scheint die Funktion gar nicht aufzurufen, jedenfalls nicht wenns vom JavaScript erstellt wurde.
Die Suche, Google und SelfHTML haben mich bisher noch nicht weitergebracht. Ich bin auch für andere Lösungen offen...

Gruss,
Kruimel

  1. Hallo,

    $("table").append("<tr><td>"+update2[3]+"</td><td>"+update2[1]+"</td><td>"+update2[2]+"</td><td><input type='button' value='<---' onclick='document.gotChoice('Hallo')'></td></tr>");

      
    Nimm mal den letzten Teil des Strings auseinander:  
      
    "</td><td><input type='button' value='<---' onclick='document.gotChoice('Hallo')'></td></tr>"  
      
    <input  
       type     = 'button'  
       value    = '<---'  
       onclick  = 'document.gotChoice('Hallo')'  
    
    >  
      
    Fällt etwas auf? Das Attribut wird schon dort geschlossen:  
      
    onclick = 'document.gotChoice('Hallo')'  
                                ^  
      
    Also lautet der Attributwert bloß »document.gotChoice(«, während »Hallo')« vom Parser verworfen wird.  
      
    Du kannst z.B. onclick='document.gotChoice(&quot;Hallo&quot;)' schreiben.  
      
    Mathias
    
    1. Hallo Matthias,

      Super, danke, jetzt läufts!

      Sind eben doch meistens die kleinen Fehler die es nicht laufen lassen und nicht so ganz auffallen...

      Gruss
      Kruimel