• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit OOP in JavaScript

Status
Für weitere Antworten geschlossen.

chri

Neues Mitglied
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 (http://prototype.conio.net/) 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:
HTML:
<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 javascript:meinMensch.SetAktivitaet($F('aktivitaet'));)

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?
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben