Hallo liebes Selfhtml Team
das ist mein erster Forum Beitrag überhaupt irgendwo. Den normalerweise findet man noch alles mit der Suchfunktion/Google. Ich hoffe ihr könnt mir helfen. Bin am verzweifeln.
Folgendes:
function getElement(f)
{
return document.getElementById(f);
}
function echoId()
{
alert(this.id);
}
Object.prototype.echoId = echoId;
getElement("test").echoId();
document.getElementById("test").echoId(); //logisch das selbe ;)
Dadurch das ich schreibe "Object.prototype.echoId = echoId;" kann ich in function echoId() mit "this" auf das return value von function getElement(f) zugreifen. Soviel hab ich schon rausgefunden.
dann ist es natürlich auch möglich direkt objekte zu erweitern zb:
function getEgal()
{
alert(this.title);
}
document.getTitle = getEgal;
document.getTitle();
meine erste frage:
welches objekt muss ich erweitern das ich wie oben schreiben kann:
function echoId()
{
alert(this.id);
}
document.getElementById("test").echoId();
ohne das ich aber "Object.prototype.echoId = echoId;" schreibe ...
also praktisch
function echoId()
{
alert(this.id);
}
document.echoId = echoId; //das ist halt nicht das richtig objekt
document.getElementById("test").echoId();
ich verstehe das getElementById eine "Methode" von dem Objekt "document" ist
... natürlich ist die Funktion auch wieder ein eigenes Objekt wie alles in javascript ... aber ich kann nicht einfach schreiben
getElementById.echoId = echoId; //das klappt nicht
document.getElementById.echoId = echoId; //das auch nicht
und meine zweite viel wichtigere frage ist ;):
das prototype framework setzt ja noch einen drauf mithilfe dessen kann man ja zb schreiben:
$("test").hide(); //nur als beispiel
wenn man sich aber den quelltext von der function hide() anschaut (ausschnitt):
hide: function(element) {
element = $(element);
element.style.display = 'none';
return element;
},
(ist halt eine etwas andere schreibweise aber das tut ja jetzt nichts zur sache)
da finde ich keine "this" wie bei mir um auf das darüber liegende objekt zuzugreifen. also vermute ich das es irgendwie möglich sein muss das ich den return wert der "darüberliegenden" ( function $ () ) an die mit "." (punkt) angefügte funktion übergebe ...
das ich meine funktion von gaaanz oben am anfang praktisch so umschreiben kann:
function echoId()
{
//alert(this.id); alte schreibweise ...
alert( arguments[0].id ); // neue schreibweise
//oder halt einen übergabeparameter einfüge ... ist ja egal
}
ich hoffe ihr verteht was ich meine und ich hoffe das ihr mir helfen könnt. =) =)