Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 10.11.2006, 18:29
DoktorW DoktorW ist offline
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 10.11.2006
Beiträge: 32
DoktorW befindet sich auf einem aufstrebenden Ast
Frage Problem mit JavaScript und OOP

hi leute

ich beschäftige mich gerade mit javascript. dazu habe ich mir einige tutorials zu oop in javascript durchgelesen und mir die javascript-library prototype (Prototype JavaScript Framework: Class-style OO, Ajax, and more) runtergeladen.

ich versuche damit gerade eine seite zu coden, mit der man die klasse "Mensch" ändern kann und dem "Menschen" eine Aktivitaet zuweisen kann. jede sekunde wird außerdem mithilfe einer klasse überprüft, was der "Mensch" gerade macht.

Das ist der Quellcode:
test.htm:
Code:
<html>

<head>
	<title>OOP-Test</title>
	
	<script language="JavaScript" src="lib/prototype.js"></script>
	<script language="JavaScript" src="oop.js"></script>
</head>

<body onload="javascript:init();">

<div id="status">&nbsp;</div>

<br><br>

<div id="aktivitaet">&nbsp;</div>

<br><br>

Neue Aktivität: <input type="text" name="neue_aktivitaet"><button onclick="javascript:meinMensch.SetAktivitaet($F('aktivitaet'));">OK</button>

</body>

</html>
oop.js:
Code:
// Initialisieren
function init()
{
	var meinMensch = new Mensch("Tanja", "w");
	meinMensch.SetAktivitaet("Latschen")
	CheckAktivitaet(meinMensch, "aktivitaet");
		
	window.setTimeout("DivInhaltAendern('status', 'Objekt Mensch erzeugt.')", 2000);
	
	
}

// Hilfsfunktionen
function DivInhaltAendern(div, neuerInhalt)
{
	$(div).innerHTML = neuerInhalt;
}


// Klasse "Mensch"
function Mensch(name, geschlecht)
{
	// Eigenschaften
	this.Name;
	this.Geschlecht;
	this.Aktivitaet;

	// Methoden
	this.SetAktivitaet = function(neueAktivitaet)
	{
		this.Aktivitaet = neueAktivitaet;
	}
	
	// Konstruktor
	this.Name = name;
	if (geschlecht == "w")
		this.Geschlecht = "männlich";
	else
		this.Geschlecht = "weiblich";
	this.Aktivitaet;
}


// Loop-Klasse
function CheckAktivitaet(mensch, divId)
{
	// Eigenschaften
	var stop = false;
	var mal = 1;
	
	// Loop-Funktion zum Aktualisieren des Aktivitäts Status
	this.loop = function(intervall)
	{
		DivInhaltAendern(divId, mensch.Aktivitaet);

		if (stop == false)
		{
			window.setTimeout("this.loop(" + intervall + ");", intervall);
		}
		else
			$(divId).innerHTML = "Überprüfung gestoppt.";
	}

	// Stoppt das Checken auf Aktivitäten
	this.Stop = function()
	{
		stop = true;
	}
	
	// Konstruktor
	this.loop(1000);
}
es wird wie gesagt die library prototype verwendet (z. b. die formular-abfragefunktion $F("aktivitaet") ).

er soll dabei die funktion aufrufen, die die Aktivität von der Instanz einer "Mensch"-Klasse (var meinMensch) verändert (Über die Methode SetAktivitaet(), dabei wird der Wert des Formulars "aktivitaet" mit prototype übergeben, also meinMensch.SetAktivitaet($F('aktivitaet ')) --> $F('aktivitaet') ist der text, der im formular steht, für alle die prototype nicht kennen).

in der javascript-konsole von firefox wird folgendes ausgegeben:
Code:
Fehler: meinMensch is not defined
Quelldatei: file:///E:/Programmierung/JavaScript/Versuche/OOP/test.htm
Zeile: 1
es funktioniert nicht (der wert wird nicht geändert). woran liegt das?
Mit Zitat antworten
Sponsored Links