(DOM) ON THE FLY erzeugter Button führt kein Javascript aus!
Andreas
- javascript
0 Cheatah0 Andreas
0 Thomas Meinike
Hallo,
ich erzeuge per
var button1= document.createElement("button");
var button1text=document.createTextNode("Bearbeiten");
button1.setAttribute("type","button");
button1.setAttribute("onClick","irgendeine_funktion(parameter);");
button1.setAttribute("name","bearbeiten");
button1.appendChild(button1text);
eine Button.
Dieser Button wird auch dargestellt aber leider wird die
Funktion 'irgendeine_function(parameter)' nicht ausgeführt.
Ist es denn überhaupt möglich?
Besten Dank!
Andreas
Hi,
button1.setAttribute("onClick","irgendeine_funktion(parameter);");
Dieser Button wird auch dargestellt aber leider wird die
Funktion 'irgendeine_function(parameter)' nicht ausgeführt.
probier's mal in der evtl. für JavaScript nötigen case-sensitiven Schreibweise "onclick".
Cheatah
probier's mal in der evtl. für JavaScript nötigen case-sensitiven Schreibweise "onclick".
Cheatah
Habe ich auch schon probiert. Funktioniert auch nicht.
Hallo,
ich erzeuge per
var button1= document.createElement("button");
var button1text=document.createTextNode("Bearbeiten");
button1.setAttribute("type","button");
button1.setAttribute("onClick","irgendeine_funktion(parameter);");
button1.setAttribute("name","bearbeiten");
button1.appendChild(button1text);eine Button.
Dieser Button wird auch dargestellt aber leider wird die
Funktion 'irgendeine_function(parameter)' nicht ausgeführt.
Ist es denn überhaupt möglich?
1. Setze mal ein leeres Formular mit ID ins Dokument.
2. Schreibe onclick komplett klein.
3. Verwende zusaetzlich outerHTML, um dem IE die DOM-Manipulation beizubringen.
Testbeispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tesdt by TM 03/03</title>
<script language="JavaScript" type="text/javascript">
<!--
function Test1()
{
var button1=document.createElement("button");
var button1text=document.createTextNode("Bearbeiten");
button1.setAttribute("type","button");
button1.setAttribute("onclick","irgendeine_funktion('Test');");
button1.setAttribute("name","bearbeiten");
button1.appendChild(button1text);
document.getElementById("abc").appendChild(button1);
if(document.getElementById("abc").outerHTML)document.getElementById("abc").outerHTML=document.getElementById("abc").outerHTML;
}
function irgendeine_funktion(parameter)
{
alert(parameter);
}
//-->
</script>
</head>
<body onload="Test1()">
<form id="abc" action="">
</form>
</body>
</html>
MfG, Thomas
- Setze mal ein leeres Formular mit ID ins Dokument.
- Schreibe onclick komplett klein.
- Verwende zusaetzlich outerHTML, um dem IE die DOM-Manipulation beizubringen.
Testbeispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tesdt by TM 03/03</title>
<script language="JavaScript" type="text/javascript">
<!--function Test1()
{
var button1=document.createElement("button");
var button1text=document.createTextNode("Bearbeiten");
button1.setAttribute("type","button");
button1.setAttribute("onclick","irgendeine_funktion('Test');");
button1.setAttribute("name","bearbeiten");
button1.appendChild(button1text);
document.getElementById("abc").appendChild(button1);
if(document.getElementById("abc").outerHTML)document.getElementById("abc").outerHTML=document.getElementById("abc").outerHTML;
}function irgendeine_funktion(parameter)
{
alert(parameter);
}//-->
</script>
</head>
<body onload="Test1()">
<form id="abc" action="">
</form>
</body>
</html>MfG, Thomas
Dein Beispiel funktioniert wunderbar. Danke. Hierbei ist folgende Zeile wichtig:
if(document.getElementById("abc").outerHTML)document.getElementById("abc").outerHTML=document.getElementById("abc").outerHTML;
Ein Problem ist bei mir, daß ich immer Laufzeitfehler bekomme. Gut diesen kann ich mit setTimeout beheben. Leider funktioniert die Geschichte immer noch nicht in meinem Konstrukt, da ich auch eine Tabellenzeile mit neuen Zellen erzeuge und der Button innerhalb der Zelle dargestellt wird. Darstellung funktioniert fabelhaft. Der Aufruf aber immer noch nicht. Vielleicht hast du noch eine Idee wo ich die ...outerHTML anweisung plazieren sollte. Ansonsten probiere ich noch ein bißchen weiter.
Nochmals besten Dank
Andreas
Hallo,
Ein Problem ist bei mir, daß ich immer Laufzeitfehler bekomme. Gut diesen kann ich mit setTimeout beheben. Leider funktioniert die Geschichte immer noch nicht in meinem Konstrukt, da ich auch eine Tabellenzeile mit neuen Zellen erzeuge und der Button innerhalb der Zelle dargestellt wird. Darstellung funktioniert fabelhaft. Der Aufruf aber immer noch nicht. Vielleicht hast du noch eine Idee wo ich die ...outerHTML anweisung plazieren sollte.
Versuche mal die gesamte Tabelle nach dem dynamischen Erzeugen von neuen Kindknoten und Inhalten zu "refreshen":
document.getElementsByTagName("table")[index_ab_0].outerHTML=document.getElementsByTagName("table")[index_ab_0].outerHTML;
oder dem "zustaendigen" table-Element eine eigene ID zuweisen und selbiges via document.getElementById() machen.
Ansonsten mal etwas mehr Code online stellen.
MfG, Thomas