Fehler: Objekt erwartet
Frank
- javascript
Hallo,
Ich beschäftige mich seit einem knappen Monat intensiv mit Javascript und bin jetzt auf folgendes Problem gestossen zudem ich nix finden kann.
<SCRIPT type="text/javascript">
<!--
function blabla() ....
function action(){
.
.
.
document.writeln("<td bgcolor="+farbe+" align=center style=width:35px height=21px><a onClick=javascript:blabla() title=....")
.
.
.
}
// -->
</SCRIPT>
ich möchte also, dass in der function action() ein HTML-Code erzeugt wird, der einen Verweis beeinhaltet. und beim Anklicken soll die function blabla() ausgeführt werden.
So wie die Zeile jetzt da oben steht, kommt beim Anklicken die Fehlermeldung: Objekt erwartet. Das kuriose ist, wenn die Zeile nicht in der function action() steht, sondern im Rumpf, dann funktioniert es. Aber leider muß die Zeile da rein :-(.
Danke schon mal im Vorraus.
Gruß
Frank
hiho,
.. du unterschlägst in deinem document.write-string konsequent alle nötigen anführungszeichen, was spätestens bei der style-angabe unweigerlich zu problemen führt.
wenn du dich intensiv mit der materie beschäftigst, empfehle ich, auch möglichst regelkonform zu arbeiten, also dich das notieren von anführungszeichen (bzw. die gesamte richtige interpunktion), gleich anzueignen.
besser ist also:
document.writeln('<td bgcolor="'+farbe+'" align="center" style="width : 35px; height : 21px"><a onclick="blabla()" title="...."');
gruß hein
danke für den Hinweis, werde ich in Zukunft berücksichtigen, nur leider ist mein Problem dadurch nicht gelöst :-(.
Hast du noch eine andere Idee?
Frank
das kann gut sein, weil ich die umgebung nicht kenne, die eventuell auch noch kleiner fehlerchen bergen.
poste doch mal deine seite bzw. den wichtigen teil, wo der aufruf von action() stattfindet...
gruß hein
okay, danke erstmal das du dich mein Problem animmst und hier ist einmal eine ganz einfaches Beispiel, was den Fehler hervorruft.
<html>
<head>
<title>Test</title>
</head>
<SCRIPT type="text/javascript">
<!--
function verweis(){
alert("juhu, es funktioniert :-)");
}
function anzeigen(){
document.writeln('<a onClick="verweis()">');
document.writeln('hier klicken</a>');
}
// -->
</SCRIPT>
<input type="button" value="los" onClick="anzeigen()">
</body>
</html>
Danke und Gruß
Frank
<html>
<head>
<title>Test</title>
</head>
<script type="text/javascript">
<!--
function verweis(){
alert("juhu, es funktioniert :-)");
}
function anzeigen(){
document.getElementById('linkplace').innerHTML = '<a href="#" onclick="verweis()">hier klicken</a>';
}
// -->
</script>
<body>
<span id="linkplace"><input type="button" value="los" onclick="anzeigen()"></span>
</body>
</html>
erklärung:
ok, als erstes hattest du das öffnende <body>-tag vergessen.
und dann zum kern: du hattest ja vor, durch den erzeugten link die funktion "verweis" ausführen zu lassen. wenn du mal einen blick in den quellcode des browserfensters wirfst, nachdem du auf den form-button "los" geklickt hast, wirst du sehen, warum es nicht funktioniert: du überschreibst nämlich mit deiner document.write-methode aus der funktion "anzeigen" den gesamten html-code deiner seite (das liegt in der natur dieser methode). der link wird zwar angezeigt, aber der rest, also alle anderen tags werden gelöscht, so auch die funktion "verweis", logisch, dass dann ein "objekt erwartet" wird beim klick.
um die ganze sache also nutzbar zu lassen, sollte nur der "los"-button mit dem link ausgetauscht werden, der rest der seite aber unberührt. darum habe ich einen span-bereich drumherum gepackt, der über eine id verfügt. klickst du auf den button "los" wird nur innerhalb dieses span-bereiches der inhalt per "innnerHTML" ausgetauscht, der rest der seite bleibt erhalten und somit auch die funktion "verweis", die dann auch problemlos klappt.
wichtig noch: wenn du dem <a>-tag kein "href"-attribut gibst, wird er nicht als link ausgegeben. mal davon abgesehen, dass jetzt wieder einige forumler über das "#" im href meckern werden. mir fiel ein eleganterer weg jetzt nicht ein. du könntes auch statt des onclick="verweis()" auch href="javascript:verweis()" schreiben, aber das ist wohl noch verpöhnter ;-)
gruß hein
echt Klasse!!!
Danke es funktioniert und ich habe wieder was dazu gelernt :-).
onClick habe ich mit Absicht gewählt, da bei href der Link blau und unterstrichen ist und ich keine Lust hatte mich in die gestaltung des href reinzulesen. das geht bestimmt auch eleganter, aber für den Anfang genügt mir das.
Vielen Dank und schönes Wochenende noch
Frank
Hallo,
Ich beschäftige mich seit einem knappen Monat intensiv mit Javascript und bin jetzt auf folgendes Problem gestossen zudem ich nix finden kann.
<SCRIPT type="text/javascript">
<!--
function blabla() ....
function action(){
.
.
.document.writeln("<td bgcolor="+farbe+" align=center style=width:35px height=21px><a onClick=javascript:blabla() title=....")
ich möchte also, dass in der function action() ein HTML-Code erzeugt wird, der einen Verweis beeinhaltet. und beim Anklicken soll die function blabla() ausgeführt werden.
Die Funktion action überschreibt das aktuelle Dokumentauch die Funktion selber, d.h. nach einem Aufruf der Funktion ist sie nicht mehr im Dokument, deshalb kommt die Fehlermeldung.
Struppi.