2.8k Aufrufe
Gefragt in Webseiten HTML von
Moinsen,

ich habe ein mit Hilfe der createElement-Methode ein neues Element erstellt und dieses eingebunden.

var checkboxFreeTickets = document.createElement("input");
checkboxFreeTickets.type = "checkbox";
checkboxFreeTickets.name = "checkFreeTickets";
document.appenChild(checkboxFreeTickets);


Ich gbee jetzt zum Test eine Nachricht aus und bekomme als Ergebnis ein undefined:

alert(document.getElementsByName("checkFreeTickets")[0]);


Kann mir jemand sagen ob ich was falsch gemacht habe? Merkwürdigerweise erkennt er dass hier eine checkbox benötigt wird. Also scheint er ein Problem mit dem name-Attribut zu haben.

15 Antworten

0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Ich sehe hier erstmal nur einen Tippfehler: statt
document.appenChild(checkboxFreeTickets);
muß es
document.appendChild(checkboxFreeTickets);
heißen.
0 Punkte
Beantwortet von
sorry, verschrieben ;)

soll natürlich

document.appendChild(checkboxFreeTickets);


heißen
0 Punkte
Beantwortet von
Falls "er" der IE ist liegt es einfach daran, dass es bei diesem Browser Schwierigkeiten mit der Erstellung neuer input-Elemente mittels createElement gibt, siehe dazu diesen SelfHTML-Forumsbeitrag
0 Punkte
Beantwortet von
ne ich nutzte firefox, überprüfe das aber gleich mal
0 Punkte
Beantwortet von
genau dasselbe. Begreif ich nich. Kann man da was machen?? Muss nämlich dringend auf das Attribut zugreifen da nach dem Klick auf den Checkbox ein Ereignis ausgelöst werden soll.

Lustigerweise erkennt er das name-Attribut wenn ich das Element direkt über HTML-Code erstelle. Aber das ist nicht mein Ziel.
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Gib dem Element eine id und verwende document.getElementById().
0 Punkte
Beantwortet von
checkboxFreeTickets.id = "checkFreeTickets";

if(document.getElementById("checkFreeTickets").clicked == true)
alert('test');


funktioniert auch nich :(. Er erkennt das Attribut noch nichtmal und bricht die Bearbeitung ab.

Das is total merkwürdig: Wenn ich sage

alert(checkboxFreeTickets.id);


gibt er mir den Wert aus. Aber sage ich

alert(document.getElementById("checkFreeTickets"));


kennt firefox das nich und gibt
null
aus. Macht doch keinen Sinn.

Wie oben schon geschrieben: Ich habe explizit festgelegt was für ein input er ausgeben soll und zwar so:

checkboxCoupons.type = "checkbox";
. Gibt er mir auch eine korrekte checkbox aus. Sage ich

checkboxCoupons.type = "submit";
gibt er mir nen submit-Button aus. Auch andere Elemente erkennt er. Nur eben diese beiden nicht.

Habe auch mal diese Variante ausprobiert:

document.write("<input type ='checkbox' name='checkFreeTickets' />");
alert(document.getElementsByName("checkFreeTickets")[0]);
.

Da gibt er zwar das Meldefenster (
[object HTMLInputElement]
) aus, aber danach bricht die Anwendung ab beziehungsweise führt zu einer Endlosschleife.

Ich bin hier echt am Verzweifeln. Ich möchte doch nur auf die Checkbox klicken und danach soll ein Meldefenster aufgehen.

Das scheint echt unmöglich zu sein. Kann doch nich so schwer sein.
0 Punkte
Beantwortet von
Hast du schon mal versucht, der Checkbox dieses verhalten direkt zuzuweisen, statt sie erst zu erzeugen und sie dann per name wieder aus dem DOM zu fischen?

Erklär doch bitte auch, was du eigentlich genau bezweckst, möglicherweise gibt's andere/einfachere Lösungen.
0 Punkte
Beantwortet von friedel Experte (3.3k Punkte)
Was erwartest du denn, dass der Browser ausgibt? In einer Alertbox kannst du doch kein Element ausgeben, sondern nur einen Text oder einen Wert. Mit
alert(document.getElementsByName("checkFreeTickets")[0]);
müsste der Browser doch ein Alertbox mit dieser Checkbox erzeugen. Sowas geht schlicht und ergreifend in einer Alertbox nicht.
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
In Deinem ersten Post fehlt das "body" (oder anderes element):
document.body.appendChild(checkboxFreeTickets);

Dann funktionierts (alert ausgabe Browser abhängig verschieden).

Zu Antwort 7:
Vielleicht meinst Du das Attribut "checked", nicht "clicked".
Aber ich glaube Du meinst:
DeinElement = document.getElementById("checkFreeTickets");
DeinElement.onclick = function() { alert("-clicked-"); }

Eventuell ist auch sinnvoller:
DeinElement.onchange = function() { alert("-clicked-"); }



...gibt er mir den Wert aus. Aber sage ich
alert(document.getElementById("checkFreeTickets"));

Funktioniert bei mir wunderbar
(FF: "object HTMLInputElement", IE: "object").
Ich kann keinen Fehler sehen.
...