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
Ok, also ich habs jetzt ausprobiert. Aber es funktioniert weiterhin nicht.

Ich hole jetzt mal aus und sage was ich vorhabe:

Ich habe da einen Button, sagen wir
test
. Drücke ich diesen Button, soll mittels

<script type="text/javascript">
function test() {
var check = document.createElement("input");
check.type = "checkbox";
check.name ="test";
document.body.appendChild(newInput);
}
</script>


die Checkbox ausgegeben werden. Funktioniert alles wunderbar, vorausgesetzt ich habe das
onload
-Event im
body
eingefügt.

Jetzt möchte ich aber, dass bei einem Klick auf die checkbox ein Meldefenster erscheint (erstmal nur zum Test damit überhaupt was funktioniert). Also sieht nach meiner Überlegung der Quelltext so aus:

check.onclick="alert("test");


Genau DAS führt er aber eben nicht aus. Stattdessen passiert garnichts. Ich kann auf die Checkbox drücken wie ich lustig bin. Es öffnet sich kein Meldefenster.

Sowohl FF als auch IE führen den Code nicht aus. Ich bin mir aber ziemlich sicher dass der Quelltext richtig ist, denn sofern ich HTML-Code einfüge (
<html>
<head>
<script type="text/javascript">
function test() {
alert("test");
}
</script>
</head>
<body>
<input type="checkbox" name="test" onclick="test();" />
</body>
</html>
) führt er diesen auch aus.

Ich habe echt keine Idee mehr warum das nich mit JavaScript funktioniert. Ich hoffe ich habe mich verständlich ausgedrückt ;)
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
Stattdessen passiert garnichts

Beachte die Fehlerconsole, und schreibe, welche Fehler auftreten.

onload -Event im body eingefügt.

das "onload event einfügen" kann man nicht.
man kann dem onload event eine funktion zuweisen.
Das würde ich sowieso empfehlen:

Es empfiehlt sich, keinerlei Javascript außerhalb einer funktion auszuführen, sonst wird code ausgeführt, bevor die Seite ganz geladen ist, und es kann auf einige (noch nicht fertiggestellte) Elemente nicht zugegriffen werden.

Am besten Du hättest eine funktion init(){ ... }, in der alles aufgerufen wird, was Du brauchst. Diese wird dann onload="init()" im body tag aufgerufen.

check.onclick="alert("test");
...Ich bin mir aber ziemlich sicher dass der Quelltext richtig ist...

ist aber völlig falsch.
1. Ein Anführungszeichen zuviel (mag nur ein tippfehler sein)
2. onclick sollte eine funktion zugewiesen werden.
Bei Deiner Schreibweise würdest Du aber dem onclick das _Ergebnis_ von alert("xyz") zuweisen. Ich glaube, das ist 'undefined'.
Deine Schreibweise ist ähnlich sinnvoll, wie:
var a = alert("xyz");

den richtigen code habe ich in Antwort 10 bereits geschrieben:
DeinElement.onclick = function() { alert("-clicked-"); }
0 Punkte
Beantwortet von
nur zu
Diese wird dann onload="init()" im body tag

Nein, bitte nicht! Stattdessen
window.onload=init;
im JavaScript-Teil!


Ansonsten:
Wie soll man aus den Code-Schnippselchen erkennen
- was du eigentlich willst
und
- wo der Fehler liegt
(siehe Antwort 8)?
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Eine (bessere) Alternative wäre es eventuell, die Checkbox unsichtbar (Attribut style="display:none;") bereits im Quelltext zu platzieren und nach Click auf den Button/Link sichtbar zu machen.

Außerdem solltest du dich vielleicht mit einer der vorhandenen JavaScript-Bibliotheken wie jQuery, prototype oder MooTools beschäftigen.
0 Punkte
Beantwortet von
vielleicht mit einer der vorhandenen JavaScript-Bibliotheken
aber nur wenn wirklich Bedarf nach soviel JavaScript ist. Nur für ein Problem gleich eine JS-Bibliothek zu installieren ist nicht sinnvoll.

Unser (mein) Problem ist, dass wir (ich) das eigentliche Problem des "WerWennNichtIch" nicht kennen, und nur WerWennNichtER kann da helfen.
...