missing ; before statement
itsman
- javascript
Liebe alle,
ich versuche gerade dynamisch einen Link mit zwei Parametern zu kreieren und diesen dann in einem JQuery Plugin zu öffnen (Highslide).
Statisch sieht das Ganze so aus und funktioniert auch:
<div>
<a id= "tatooframelink" onclick="return hs.htmlExpand(this, { objectType: 'iframe' } )" href="http://localhost:8080/tatoolookup/gnconnect?ug=AR&id=181129">Results</a>
</div>
<div class="highslide-body" style="height: 0px; width: 0px;">
<iframe frameborder="0" src="" onload="if (hs.expanders[0]) hs.expanders[0].contentLoaded()" style="width: 0px; height: 0px;" key="0" name="hs1308912831769">
</iframe>
</div>
Die dynamische JS Funktion sieht bei mir momentan so aus:
function get_href()
{
var n = document.getElementById("userGroupSelect").value;
var id = document.getElementById("rasteridInput").value;
document.getElementById("tatooframelink").innerHTML = "<a onclick="return hs.htmlExpand(this, { objectType: 'iframe' } )" href=http://localhost:8080/tatoolookup/gnconnect?ug=" + n + "&id=" + id+">Results</a>";
}
hier bekomme ich im Firebug den Fehler angezeigt:
"missing ; before statement".
Diese Version hier funktioniert (öffnet den Link aber natürlich nur in einem neuen Fenster und nicht in einer JQuery Highslide Box):
function get_href()
{
var n = document.getElementById("userGroupSelect").value;
var id = document.getElementById("rasteridInput").value;
document.getElementById("tatooframelink").innerHTML = "<a href=http://localhost:8080/tatoolookup/gnconnect?ug=" + n + "&id=" + id+">Results</a>";
}
Daher gehe ich davon aus, dass ich im Ausdruck
"onclick="return hs.htmlExpand(this, { objectType: 'iframe' } )"
einen Syntaxfehler habe. Kann mir da jemand einen Tip geben? Geht das überhaupt so, wie ich mir das vorstelle?
Danke im Voraus
Jan
Hallo,
document.getElementById("tatooframelink").innerHTML = "<a onclick="return hs.htmlExpand(this, { objectType: 'iframe' } )" href=http://localhost:8080/tatoolookup/gnconnect?ug=" + n + "&id=" + id+">Results</a>";
schau dir mal die Anführungszeichen an und achte genau drauf, wo der String anfängt und wo er aufhört.
"missing ; before statement"
Das meldet der FF, weil er den Ausdruck nicht interpretieren kann. Der String ist zu Ende, aber was danach folgt, ist weder ein Operator, noch ergibt es ein syntaktisch korrektes Javascript-Statement.
Daher gehe ich davon aus, dass ich im Ausdruck
onclick="return hs.htmlExpand(this, { objectType: 'iframe' } )
einen Syntaxfehler habe.
Falsch gedacht, der Fehler ist woanders.
Geht das überhaupt so, wie ich mir das vorstelle?
Vermutlich schon - nur auf die richtige Stringverkettung musst du achten. Oder auf eine günstige Maskierung von Anführungszeichen.
Davon abgesehen solltest auch beachten, dass das '&' in HTML maskiert werden muss.
Ciao,
Martin
@@Der Martin:
nuqneH
Davon abgesehen solltest auch beachten, dass das '&' in HTML maskiert werden muss.
Und dass Attributwerte (hier @href) in Anführungszeichen stehen müssen (bis auf Ausnahmen, die hier nicht gegeben sind). [HTML401 §3.2.2]
Qapla'
Hallo,
Davon abgesehen solltest auch beachten, dass das '&' in HTML maskiert werden muss.
[HTML401 §B.2.2]
Und dass Attributwerte (hier @href) in Anführungszeichen stehen müssen (bis auf Ausnahmen, die hier nicht gegeben sind). [HTML401 §3.2.2]
das kommt noch dazu. Und auch in den Ausnahmefällen, wo die Anführungszeichen entfallen dürfen, ist es guter Stil, sie trotzdem zu setzen.
Ciao,
Martin
@@Der Martin:
nuqneH
Und dass Attributwerte (hier @href) in Anführungszeichen stehen müssen (bis auf Ausnahmen, die hier nicht gegeben sind). [HTML401 §3.2.2]
das kommt noch dazu. Und auch in den Ausnahmefällen, wo die Anführungszeichen entfallen dürfen, ist es guter Stil, sie trotzdem zu setzen.
Da das an verlinkter Stelle schon ausdrücklich erwähnt ist, hab ich mir den Hinweis gespart.
Qapla'
Hallo Martin und Gunnar,
so hat es nun geklappt:
document.getElementById("tatooframelink").innerHTML = "<a href=http://localhost:8080/tatoolookup/gnconnect?ug=" + n + "&id=" + id +" target=\"_blank\" onclick=\"return hs.htmlExpand(this, { objectType: 'iframe' } );\">Results</a>";
es hat wohl vor allem am Ampersand gelegen, den ich nun in HTML Schreibweise in den Link geschrieben habe. Ich gelobe jedoch Besserung, und werde die href auch noch mit Hochkommata versehen :)
Auf jeden Fall danke
Jan