Article View: pl.comp.lang.javascript
Article #39465jak to zrobic obiektowo
From: Marek
Date: Sat, 15 Apr 2006 21:14
Date: Sat, 15 Apr 2006 21:14
84 lines
3245 bytes
3245 bytes
Mam problem, ktory sprobuje pokazac na prostym przykladzie definicji obiektu
:
<html>
<head>
<script>
function zmien(){ // funkcja wywolywana
po kliknieciu w napis
nowy_moj_obiekt.zmien_tresc("Ala bez kota");
}
//========================definicja obiektu moj_obiekt=====
function zmien_tresc(nowa_tresc){
this.tresc=nowa_tresc;
document.getElementById("napis").innerHTML=nowa_tresc;
}
function moj_obiekt(tresc){
this.tresc=tresc; // ustawianie wlasciwosci "tresc" obiektu
this.zmien_tresc=zmien_tresc; // przypisanie funkcji "zmien_tresc" jako
metody obiektu
document.write("<p id='napis' onclick='zmien()'>"+this.tresc+"</p>");
}
//================koniec definicji obiektu moj_obiekt=====
</script>
</head>
<body>
<script>
nowy_moj_obiekt=new moj_obiekt("Ala ma kota");
</script>
</body>
</html>
Problem w tym, ze funkcja obslugi zdarzenia onclick - zmien() jest poza
definicja obiektu - i jesli chce cos zmienic
w obiekcie musze odwolac sie w niej do instancji nowy_moj_obiekt.
A ja chcialbym zdefiniowac ta obsluge zdarzenia jako element obiektu - zeby
zawsze po kliknieciu na napis w jakiejkolwiek
jego instancji zawsze zmienial sie on na "Ala bez kota".
Probowałem to zrobic , ale ponizszy kod jest bledny (zmienione linie
oznaczylem gwiazdka):
<html>
<head>
<script>
function zmien(){ // funkcja wywolywana
po kliknieciu w napis
this.zmien_tresc("Ala bez kota"); //*
}
//========================definicja obiektu moj_obiekt=====
function zmien_tresc(nowa_tresc){
this.tresc=nowa_tresc;
document.getElementById("napis").innerHTML=nowa_tresc;
}
function moj_obiekt(tresc){
this.tresc=tresc; // ustawianie wlasciwosci "tresc" obiektu
this.zmien_tresc=zmien_tresc; // przypisanie funkcji "zmien_tresc" jako
metody obiektu
this.zmien=zmien; // przypisanie funkcji "zmien" jako metody
obiektu //*
document.write("<p id='napis' onclick='this.zmien()'>"+this.tresc+"</p>");
//*
}
//================koniec definicji obiektu moj_obiekt=====
</script>
</head>
<body>
<script>
nowy_moj_obiekt=new moj_obiekt("Ala ma kota");
</script>
</body>
</html>
Bede wdzieczny za pomoc
pozdrawiam
Marek
Technical Details
Message-ID:
<e1rnpq$kh7$1@atlantis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "Marek" <mrb@pl-net.pl> Newsgroups: pl.comp.lang.javascript Subject: jak to zrobic obiektowo Date: Sat, 15 Apr 2006 23:14:32 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 89 Message-ID: <e1rnpq$kh7$1@atlantis.news.tpi.pl> NNTP-Posting-Host: actp176.neoplus.adsl.tpnet.pl X-Trace: atlantis.news.tpi.pl 1145135738 21031 83.11.69.176 (15 Apr 2006 21:15:38 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Sat, 15 Apr 2006 21:15:38 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-RFC2646: Format=Flowed; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit