write("<a href=\"javascript:foo(arg)... GEHT NICHT!!!!
Anne
- javascript
Hallo,
ich habe in meinem JavaScript eine Funktion edit definiert die eine Instanz a eines ebenfalls in dem Script definierten objects als Argument erhält. Rufe ich die Funktion direkt aus dem Skript aus auf, geht alles wunderbar. Will ich sie aber durch klicken auf einen Link auslösen lassen, gehts nicht! Diesen Link erstelle ich auch aus dem js heraus. Muss etwas mit dem Setzen von ANFÜHRUNGSZEICHEN BEIM ARGUMENT zu tun haben, die ich ja in dem String für document.write(...) brauche. Momentan siehts so aus:
window.document.write("<a href="javascript:edit(a);">",a.title,"</a>");
Wenn ich eine andere Funktion OHNE Argument an der Stelle aufrufe, gehts.
Danke für Tipps!!!
hi
window.document.write("<a href="javascript:edit(a);">",a.title,"</a>");
die zeile ist schon recht abenteuerlich.
hast du dich schon mal mit event handlern beschäftigt (z.B. onlick)?
die sind nämlich eigentlich für sowas da.
wie sieht die funktion aus?
so long
ole
(8-)>
Hallo,
du meinst sicher etwas in der Art:
window.document.write"<a href="javascript:;" onClick=window.open()>",a.title,"</a>");
Wenn ich das so einfüge, wird auch die Funktion window.open() ausgeführt, wenn ich auf den Lonk klicke.
Meine edit-Funktion ist momentan noch nicht sehr spektakulär, gibt sie doch erstmal den Titel des Objektes aus:
function edit(a){
alert(a.title);
}
Da kann sich der Fehler nicht eingeschlichen haben ;-)
Habe auch folgendes probiert:
window.document.write("<a href="javascript:;" onClick=edit(a)>",a.title,"</a>");
Geht auch nicht.
Muss wie gesagt irgendwas mit der Übergabe des Arguments zu tun haben. Das a aber ein gültiges Argument ist, sehe ich daran, dass a.title im Browser mir auch das gewünschte ausgibt.
Gruß
Anne
Hallo Anne,
window.document.write("<a href="javascript:edit(a);">",a.title,"</a>");
write benötigt nur einen Parameter. Ersetz mal dir "," durch + ".",
also window.document.write("<a href="javascript:edit(a);">"+a.title+"</a>"); .
Gruß, Jürgen
Hallo Jürgen,
macht er leider auch nicht.
Vielleicht noch als Info: nachdem ich erfolglos auf den Link klicke, erscheint unten in der Statuszeile "Fehler auf der Seite" Beim Mouseover über den Links gibt er aber "javascript:edit(a)" an.
Anne
Hallo Anne,
Vielleicht noch als Info: nachdem ich erfolglos auf den Link klicke, erscheint unten in der Statuszeile "Fehler auf der Seite"
Dann klick mal auf das Fehlersymbol (IE) bzw. öffne die Javascriptkonsole. Dort wirst Du erfahren, was falsch ist und in welcher Zeile der Fehler steckt.
Gruß, Jürgen
Hallo Jürgen,
Vielleicht noch als Info: nachdem ich erfolglos auf den Link klicke, erscheint unten in der Statuszeile "Fehler auf der Seite"
Dann klick mal auf das Fehlersymbol (IE) bzw. öffne die Javascriptkonsole. Dort wirst Du erfahren, was falsch ist und in welcher Zeile der Fehler steckt.
Hab ich: also a ist undefiniert!!!
Aber wie kann ich ihm denn sagen, dass er das a nehmen soll, was er außerhalb der document.write(...)-Anweisung ja kennt!! Wie gesagt, a.title wird korrekt ausgelesen, d.h. er hat sogar in der Anweisung window.document.write("<a href="javascript:edit(a);">"+a.title+"</a>"); Zugriff auf a, aber in dem String "<a href="javascript:edit(a);">" erkennt er das a nicht. Wie kann ich es ihm zu erkennen geben??? 'a', $a, ... irgendwie sowas???
Gruß
Anne
hi,
Hab ich: also a ist undefiniert!!!
was soll denn a überhaupt sein?
ein javascript-objekt, eine -variable - oder vielleicht nur ein name, den du dann eher als literal schreiben solltest?
gruss,
wahsaga
hi,
was soll denn a überhaupt sein?
ein javascript-objekt, eine -variable - oder vielleicht nur ein name, den du dann eher als literal schreiben solltest?
gruss,
wahsaga
naja, wenn er a.title richtig macht, dann wirds wohl wahrscheinlich schon ein Objekt sein, das auch die Eigenschaft title besitzt.
da er die Meldung "fehler auf der seite" beim Anklicken des Links bringt, würde ich den Fehler mal in der Funktion edit() vermuten.
gruß
ptr
hi,
vielleicht kommt er ja damit nicht klar, daß es a schon als Objekt gibt und dann a nochmal als Übergabeparameter verwendet wird, mit dem dann das Objekt a wieder übergeben werden soll.
Versuch doch einfach mal so:
function edit(b)
{alert(b.title);}
edit(a);
gruß
ptr
Hallo,
vielleicht springt ja noch einer von den Helfern vom Freitag noch mal hierhin. Habe hier mal eine stark abgespeckte Version meines Codes, die aber für die Problembeschreibung voll reicht. Wenn ich also folgendes Script ausführe und dann durch Klicken des Links die Funktion edit(a) aufrufen will, erscheint in der Statuszeile: Fehler auf der Seite. Und bei Klicken auf das Fehlersymbol: 'a' ist undefiniert. Vielleicht ist ja jemandem übers WE ne Idee gekommen, wie ich a wirklich das Object a übergeben kann. Würde mich seeehr freuen.
Bis dann, Anne
<script language="JavaScript">
<!--
function activity(title){
this.title = title;
}
function edit(a){
alert(a.title);
}
function writeTitle(a){
window.document.write("<a href="javascript:edit(a);">"+a.title+"</a>");
}
test=new activity("Titel");
writeTitle(test);
//-->
</SCRIPT>
Hallo Anne,
<script language="JavaScript">
<!--
function activity(title){
this.title = title;
}
function edit(a){
alert(a.title);
}
function writeTitle(a){
window.document.write("<a href="javascript:edit(test);">"+a.title+"</a>");
}
test=new activity("Titel");
writeTitle(test);
//-->
</SCRIPT>
du mußt der Funktion edit eine gültige Variable übergeben (test).
a gibts nur als Übergabeparameter, das kann nicht gefunden werden , wenn edit(a) im Dokument steht, da gibts das a nicht, das gibts nur innerhalb der Funktionen.
gruß
ptr
Hallo Anne,
wenn du statt der Variablen selbst deren Namen als String übergibst, kannst du im document.write() diesen String verwenden, ums in den String 'edit()' mit reinzuschreiben:
"edit("+a+");" => "edit("+"test"+");"
an die Varible selbst kommst du dann so ran:
eval(a).title => eval("test").title
sieht dann so aus:
<script language="JavaScript">
<!--
function activity(title){
this.title = title;
}
function edit(a){
alert(a.title);
}
function writeTitle(a){
window.document.write("<a href="javascript:edit("+a+");">"+eval(a).title+"</a>");
}
test=new activity("Titel");
writeTitle("test");
//-->
</SCRIPT>
gruß
ptr
Hallo Peter,
vielen Dank, für eine Variable funktionierts! Das ist schon mal ein Fortschritt!!!
Jetzt habe ich jedoch ein ganzes Feld mit solchen activities. Das Script sieht dann so aus:
<script language="JavaScript">
<!--
function activity(title){
this.title = title;
}
function edit(a){
alert(a.title);
}
function writeTitle(a){
window.document.write("<a href="javascript:edit("+a+");">"+eval(a).title+"</a></br>");
}
var test = new Array();
test[0]=new activity("Titel1");
test[1]=new activity("Titel2");
test[2]=new activity("Titel3");
for(i=0; i<3; i++){
writeTitle("test[i]");
}
//-->
</SCRIPT>
Dann interpretiert er zwar eval(a).title korrekt, meckert jedoch, dass beim Aufruf von "edit(a)" bei "alert(a.title);" title entweder null wäre oder kein Objekt.
Haste ne Idee??
Viele Grüße,
Anne
Hallo Anne,
for(i=0; i<3; i++){
writeTitle("test["+i+"]");}
^^^^^
weiß nicht mehr, in welchem thread ich nun posten soll !
gruß
ptr