(DOM) - HTML-Elementen Funktionen einhängen
XaraX
- javascript
0 molily0 Thomas Meinike
Hallo,
Gurndlage:
Funktionen, die innerhalb eines Dokuments notiert werden,
sind als Methoden des window-Objekts abrufbar. Gerade in
einem Frameset kann man sich diese Eigenheit zu nutze
machen (top.function_name()).
Frage:
Besteht die Möglichkeit einem HTML-Element eine Funktion
einzuhängen, sodaß sie über beispielsweise
document.getElementsByTagName('div')[1].function_name()
aufgerufen werden können; wenn ja - wie?
Gruß aus Berlin!
eddi
Hallo,
Besteht die Möglichkeit einem HTML-Element eine Funktion
einzuhängen, sodaß sie über beispielsweise
document.getElementsByTagName('div')[1].function_name()
aufgerufen werden können; wenn ja - wie?
Funktionen sind wie du sagst Objektmethoden, und Methoden sind Funktionsobjekte:
var obj = document.getElementsByTagName('div')[1];
obj.funktion = function (param) { alert(param); };
alert(typeof obj.funktion);
obj.funktion('hallo welt');
Ob da jeder Browser mitspielt, ist eine andere Frage, vom Prinzip her sollte das anhängen von Objekten an Elementknoten möglich sein.
Mathias
Hallo molily.
Da warst du schneller, ich war noch beim Testen :)
var obj = document.getElementsByTagName('div')[1];
obj.funktion = function (param) { alert(param); };
alert(typeof obj.funktion);
obj.funktion('hallo welt');
Wie du bereits anmerktest, spielt da nicht jeder Browser mit. Der mir hier zur Verfügung stehende IE 6.0.2600 unter Win98SE verlangt nach all:
// Zugriff auf das div mit der ID 'Test'
var meinObj = document.all.test;
meinObj.funktion = function (param) { alert(param); };
alert(typeof meinObj.funktion);
meinObj.funktion('hallo welt');
Bei der Verwendung von getElementsByTagName bekommst man den Fehler "'undefined' ist Null oder kein Objekt" (die anderen Zugriffsmethoden habe ich nicht getestet).
Freundschaft!
Siechfred
Hallo,
var obj = document.getElementsByTagName('div')[1];
Der mir hier zur Verfügung stehende IE 6.0.2600 unter Win98SE verlangt nach all
Was mit all adressierbar ist, sollte auch mit getElementsByTagName ansprechbar sein.
Bei der Verwendung von getElementsByTagName bekommst man den Fehler "'undefined' ist Null oder kein Objekt" (die anderen Zugriffsmethoden habe ich nicht getestet).
Vorausgesetzt ist bei obigem Code natürlich, dass im Dokument mindestens zwei div-Elemente existieren. Wenn das der Fall ist, klappt es hier bereits im MSIE 5.0.
Mathias
Hallo und vielen Dank Euch Drein!
Gruß aus Berlin!
eddi
Hallo,
Besteht die Möglichkeit einem HTML-Element eine Funktion
einzuhängen, sodaß sie über beispielsweise
document.getElementsByTagName('div')[1].function_name()
aufgerufen werden können; wenn ja - wie?
Reicht vielleicht dieser Ansatz?
...
<body>
<p id="bla">Text</p>
<script language="JavaScript" type="text/javascript">
<!--
function hallo(txt)
{
alert("Hallo "+txt+"!");
}
function summe(x,y)
{
alert(x+y);
}
var d=document.getElementById("bla");
d.myfunction1=hallo;
d.myfunction1("Welt");
d.myfunction2=summe;
d.myfunction2(1,2);
//-->
</script>
</body>
...
Ueber eine Schleife lassen sich ggf. auch mehrere Elementobjekte mit Funktionen belegen. Alternative Zuweisung der Funktionen mit function() oder new Function().
MfG, Thomas