getElementById - Problem
Achim
- javascript
function js_hide(elementid) {
var el = document.getElementById(elementid);
el.style.display = 'none';
}
function js_show(elementid) {
var el = document.getElementById(elementid);
el.style.display = '';
}
function init_venue(eventid) {
if (eventid>0) {
js_hide("el_newvenue");
js_show("el_choosevenue");
} else {
js_show("el_newvenue");
js_hide("el_choosevenue");
elSelectVenue(0,'No Venue');
}
}
window.addEventListener("ondomready", init_venue('0'), false);
Ich habe das Problem mit der Funktion js_hide und js_show. Wenn ich den Namen des Elements per Variable übergebe ist die Variable el null. Wenn ich den Namen des Elements per Hand eintrage geht es !?
Was mache ich falsch ? Die Elemente gibt's natürlich ..
Gruss
Hellihello
wie gibst Du per Hand ein, wie übergibst Du per Variable?
Dank und Gruß,
Lieber frankx,
wie gibst Du per Hand ein, wie übergibst Du per Variable?
... und in welchem "Browser" testest Du? Und unter welcher URL kann man sich das einmal anschauen?
Und hier die Tipps für Fragende.
Liebe Grüße,
Felix Riesterer.
Liebe Grüße,
Felix Riesterer.
Der Browser ist Firefox mit Firebug ... eine Url hab ich im Moment nicht. Es ist auch nur der Codeschnipsel. Die beiden Elemente sind normale Div Container die ich verstecken und anzeigen möchte.
Habe das auch schon oft gemacht aber keine Ahnung warum der mosert ..
Gruss
Hallo Felix,
das liegt daran, dass die Objekte noch nicht geladen sind, wenn du das Skript aufrufst.
onLoad im Body-Tag wird das Problem lösen.
Gruss
Dagobert
»» Liebe Grüße,
»»
»» Felix Riesterer.Der Browser ist Firefox mit Firebug ... eine Url hab ich im Moment nicht. Es ist auch nur der Codeschnipsel. Die beiden Elemente sind normale Div Container die ich verstecken und anzeigen möchte.
Habe das auch schon oft gemacht aber keine Ahnung warum der mosert ..
Gruss
Hellihello
Hallo Felix,
das liegt daran, dass die Objekte noch nicht geladen sind, wenn du das Skript aufrufst.
onLoad im Body-Tag wird das Problem lösen.
Aber Buttons die die Funktionen bedienen sollten doch dennoch funktionieren, wenn die ID korrekt übergeben wird.
Dank und Gruß,
Hallo,
richtig, aber das hat er ja nicht ausprobiert. Er hat einfach die elementid händisch in die Funktion übertragen. Das ändert nichts an der Problematik.
Gruss
Dagobert
Hellihello
»» Hallo Felix,
»» das liegt daran, dass die Objekte noch nicht geladen sind, wenn du das Skript aufrufst.
»» onLoad im Body-Tag wird das Problem lösen.Aber Buttons die die Funktionen bedienen sollten doch dennoch funktionieren, wenn die ID korrekt übergeben wird.
Dank und Gruß,
das liegt daran, dass die Objekte noch nicht geladen sind, wenn du das Skript aufrufst.
onLoad im Body-Tag wird das Problem lösen.
Hast du den Code des OPs überhaupt versucht zu verstehen?!
Mathias
window.addEventListener("ondomready", init_venue('0'), false);
Es liegt doch auf der Hand, was er damit erreichen wollte. Gerade deshalb, _WEIL_ es den Event "ondomready" nicht gibt.
Täusche ich, senke ich schamvoll mein Haupt
Dagobert
»» das liegt daran, dass die Objekte noch nicht geladen sind, wenn du das Skript aufrufst.
»» onLoad im Body-Tag wird das Problem lösen.Hast du den Code des OPs überhaupt versucht zu verstehen?!
Mathias
Hellihello Felix,
Lieber frankx,
»» wie gibst Du per Hand ein, wie übergibst Du per Variable?
Und hier die Tipps für Fragende.
Bezogen sich die Tipps für Fragende jetzt auf meine Frage? (;-).
Dank und Gruß,
Robert aka
wie gibst Du per Hand ein, wie übergibst Du per Variable?
per Variable siehst Du in der init Funktion und per Hand habe ich einfach mal
var el = document.getElementById("el_newvenue");
geschrieben ...
Hellihello
»» wie gibst Du per Hand ein, wie übergibst Du per Variable?
per Variable siehst Du in der init Funktion und per Hand habe ich einfach mal
var el = document.getElementById("el_newvenue");
geschrieben ...
Ondomready wird die Funktion einmal ausgeführt und funktioniert?
Und wie wird sie danach aufgerufen?
Pack doch mal ein alert(elementid) in die Funktionen zum Testen.
Dank und Gruß,
window.addEventListener("ondomready", init_venue('0'), false);
Du willst, dass beim Eintreten des Events die Funktion init_venue ausgeführt wird und ihr sollen Parameter übergeben werden.
Was du hier machst, ist aber was ganz anderes! Wenn der Browser diese JS-Codezeile ausführt, dann wird löst er erst alle Ausdrücke in den Funktionsparametern auf. Das heißt: init_venue(0) wird direkt ausgeführt und dessen Rückgabewert wird an addEventListener übergeben. addEventListener erwartet wahrscheinlich ein Funktionsobjekt. Du übergibst aber keines, denn init_venue gibt nichts zurück.
Daraus resultiert, dass init_venue sofort ausgeführt wird, und nicht erst ondomready, wenn das DOM zur Verfügung steht. Klar, in dem Moment kannst du nicht mit getElementById auf Elemente zugreifen.
Du musst also ein Funktionsobjekt übergeben, das den init_venue-Funktionsaufruf kapselt. Das ginge z.B. mit einer Function-Expression:
window.addEventListener("ondomready", function () { init_venue('0') }, false);
http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#fehler-handler-aufrufen (gilt sowohl fürs traditionelle Event-Handling wie auch für die Benutzung von addEventListener und Helferfunktionen)
http://aktuell.de.selfhtml.org/weblog/javascript-syntax
Mathias
http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#fehler-handler-aufrufen (gilt sowohl fürs traditionelle Event-Handling wie auch für die Benutzung von addEventListener und Helferfunktionen)
http://aktuell.de.selfhtml.org/weblog/javascript-syntax
Herzlichen Dank ! Genau das war's ...
Hellihello
window.ondomready = function() {
init_venue('0')
}
geht nicht?
Dank und Gruß,
window.addEventListener("ondomready", init_venue('0'), false);
P.S. Benutzt du irgendeine JS-Bibliothek? Wenn ja, welche?
Den Event ondomready gibt es standardmäßig nicht.
Mathias