oGGoMedlem sedan apr. 2003120 inlägg Hej!
Sitter och försöker trassla upp detta med Objekt och "klasser" i Javascript men blir inte riktigt klok.
Hur i hela friden kommer jag åt min klass "Test" inifrån ett event i klassen?
Anropar jag this så är det ju elementet elm.
Vad jag vill är alltså att komma åt alla mina metoder, variabler etc. inifrån eventlistnern på elm1.
Går detta, och isåfall hur?
Javascripten:
// Min klass test som skapar upp två divvar
function Test()
{
this.elm1 = document.createElement("DIV");
this.elm1.innerHTML = "Jag ar element ett.";
this.elm2 = document.createElement("DIV");
this.elm2.innerHTML = "Jag ar element tva."
this.elm1.onmouseover = function()
{
// hur kommer jag åt mina metoder, objekt etc, härifrån?
// this är ju satt till elm och jag vill åt "klassen" och alla dess metoder..
}
}
// Metod för att rita de två divvarna..
Test.prototype.Draw = function()
{
document.getElementsByTagName('body')[0].appendChild(this.elm1);
document.getElementsByTagName('body')[0].appendChild(this.elm2);
}
HTML:
<html>
<head>
<script language="javascript" type="text/javascript" src="js/TestClass.js?<?php echo date('Y-m-d H:i:s'); ?>"></script>
</head>
<body id="bodyn">
<script language="JavaScript" type="text/javascript">
var x = new Test('test');
x.Draw();
</script>
</body>
</html>
Javascripten:
// Min klass test som skapar upp två divvar
function Test()
{
[B]var th = this;[/B]
this.elm1 = document.createElement("DIV");
this.elm1.innerHTML = "Jag ar element ett.";
this.elm2 = document.createElement("DIV");
this.elm2.innerHTML = "Jag ar element tva."
this.elm1.onmouseover = function()
{
[B]th.draw();[/B]
// hur kommer jag åt mina metoder, objekt etc, härifrån?
// this är ju satt till elm och jag vill åt "klassen" och alla dess metoder..
}
}
// Metod för att rita de två divvarna..
Test.prototype.[B]draw[/B] = function()
{
document.getElementsByTagName('body')[0].appendChild(this.elm1);
document.getElementsByTagName('body')[0].appendChild(this.elm2);
}
HTML:
<html>
<head>
<script language="javascript" type="text/javascript" src="js/TestClass.js?<?php echo [B]rand()[/B]; ?>"></script>
</head>
<body id="bodyn">
<script language="JavaScript" type="text/javascript">
var x = new Test('test');
[B]x.draw();[/B]
</script>
</body>
</html>
Med var på det som jag visar där. När du definierar en variabel med var i en funktion så är den åtkomlig för andra funktioner som definieras i den funktionen. Däremot kommer th inte vara åtkomlig från draw då draw är definierad utanför Test.
Jag passade också på att ändra ett par saker av hävd. Dels ändrade jag till litet d i draw. (Jag gillar Javas konvention bättre än .net's, nämligen att klasser börjar med stor bokstav och allt annat med liten) Dessutom ändrade jag date-strängen till rand(); eftersom filen (teoretiskt) kan cachas om du laddar om inom en sekund som du hade gjort det.
oGGoMedlem sedan apr. 2003120 inlägg
nitro2k01 skrev:
Med var på det som jag visar där. När du definierar en variabel med var i en funktion så är den åtkomlig för andra funktioner som definieras i den funktionen. Däremot kommer th inte vara åtkomlig från draw då draw är definierad utanför Test.
Jag passade också på att ändra ett par saker av hävd. Dels ändrade jag till litet d i draw. (Jag gillar Javas konvention bättre än .net's, nämligen att klasser börjar med stor bokstav och allt annat med liten) Dessutom ändrade jag date-strängen till rand(); eftersom filen (teoretiskt) kan cachas om du laddar om inom en sekund som du hade gjort det.
Tack det funkar utmärkt.
Jag hade testat en liknande lösning innan utan vidare resultat. Dessutom har jag nog de senaste dagarna förlitat mig blint på Intellisensen i Aptana då jag precis som du klurat ut är C#-kodare vanligtvis och således brukar jobba i Visual Studio där intelli-sensen aldrig ljuger.
Jag tackar å det ödmjukaste.
Ang. typningen har du givetvis också rätt, återigen C# tänk.
Hälsningar,
oGGo