/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Spørgsmål til javascript
Fra : OleHaahr@gmail.com


Dato : 28-01-07 22:17

Hej !

Jeg har følgende javascript:

<html>
<body>
<script LANGUAGE=Javascript>
function Person (fornavn, efternavn)
{
this.fornavn = fornavn;
this.efternavn = efternavn;
this.navn = fornavn +" "+ efternavn;
}

var p1 = new Person("Ole","Andersen");

document.write(p1.fornavn+"<br>");
document.write(p1.efternavn+"<br>");
document.write(p1.navn+"<br>");
document.write("----------------------------------------------<br>");
p1.fornavn = "Hans"
document.write(p1.fornavn+"<br>");
document.write(p1.efternavn+"<br>");
document.write(p1.navn+"<br>");
</script>
</body>
</html>

Det giver følgende output:

Ole
Andersen
Ole Andersen
----------------------------------------------
Hans
Andersen
Ole Andersen

Men jeg ville gerne have et output som så således ud:

Ole
Andersen
Ole Andersen
----------------------------------------------
Hans
Andersen
Hans Andersen

Men nu har jeg prøvet 117 forskellige ting, og det går bare galt: Jeg
har f.eks. prøvet nedenstående:

<html>
<body>
<script LANGUAGE=Javascript>
function Person (fornavn, efternavn)
{
this.fornavn = fornavn;
this.efternavn = efternavn;
this.navn = helenavnet;

function helenavnet()
{
this.fornavn+" "+this.efternavn;
}
}

var p1 = new Person("ole","Andersen");
document.write(p1.fornavn+"<br>");
document.write(p1.efternavn+"<br>");
document.write(p1.navn+"<br>");
document.write("----------------------------------------------<br>");
p1.fornavn = "hans"
document.write(p1.fornavn+"<br>");
document.write(p1.efternavn+"<br>");
document.write(p1.navn+"<br>");
</script>
</body>
</html>


Men det giver bare følgende output:

Ole
Andersen
function helenavnet() { this.fornavn+" "+this.efternavn; }
----------------------------------------------
Hans
Andersen
function helenavnet() { this.fornavn+" "+this.efternavn; }

Hvad i alverden går der galt ??

Håber at I kan hjælpe.

Mange hilsner fra Ole


 
 
Martin (29-01-2007)
Kommentar
Fra : Martin


Dato : 29-01-07 04:02

OleHaahr@gmail.com wrote:
> <html>
> <body>
> <script LANGUAGE=Javascript>
> function Person (fornavn, efternavn)
> {
> this.fornavn = fornavn;
> this.efternavn = efternavn;
> this.navn = helenavnet;


Du har ikke afsluttet din funktion her


>
> function helenavnet()
> {
> this.fornavn+" "+this.efternavn;
> }
> }

OleHaahr@gmail.com (29-01-2007)
Kommentar
Fra : OleHaahr@gmail.com


Dato : 29-01-07 10:50

On 29 Jan., 04:02, Martin <n...@natten-i.dk> wrote:
> OleHa...@gmail.com wrote:
> > <html>
> > <body>
> > <script LANGUAGE=Javascript>
> > function Person (fornavn, efternavn)
> > {
> > this.fornavn = fornavn;
> > this.efternavn = efternavn;
> > this.navn = helenavnet;Du har ikke afsluttet din funktion her
>
>

Det gør da overhovedet ingen forskel. Jeg antager, at du mener at min
kode skal se således ud:

<html>
<body>
<script LANGUAGE=Javascript>
function Person (fornavn, efternavn)
{
this.fornavn = fornavn;
this.efternavn = efternavn;
this.navn = helenavnet;
}

function helenavnet()
{
this.fornavn+" "+this.efternavn;
}

var p1 = new Person("ole","Andersen");
document.write(p1.fornavn+"<br>");
document.write(p1.efternavn+"<br>");
document.write(p1.navn+"<br>");
document.write("----------------------------------------------<br>");
p1.fornavn = "hans"
document.write(p1.fornavn+"<br>");
document.write(p1.efternavn+"<br>");
document.write(p1.navn+"<br>");
</script>
</body>
</html>

Prøv at paste det ind i et HTML-dokument, og du vil se, at det IKKE
virker.

Mange hilsner fra Ole


OleHaahr@gmail.com (29-01-2007)
Kommentar
Fra : OleHaahr@gmail.com


Dato : 29-01-07 17:51

Jeg fandt selv svaret. Man skal selvfølgelig huske, at et objects
metoder skal kaldes med parenteser, som f.eks:

document.write(p1.navn()+"<br>");

og IKKE

document.write(p1.navn+"<br>");

Hvis det skal lave helt OOP-rigtigt, bør man nok lave SET og GET
metoder, og så helt undlade at kalde nogen properties direkte.


//Ole

Her er selve koden...

<html>
<body>
<script LANGUAGE=Javascript>
function Person (fornavn, efternavn)
{
this.fornavn = fornavn;
this.efternavn = efternavn;
this.navn = function () {return this.fornavn+" "+this.efternavn;}
}

var p1 = new Person("ole","Andersen");

document.write(p1.fornavn+"<br>");
document.write(p1.efternavn+"<br>");
document.write(p1.navn+"<br>");
document.write(p1.navn()+"<br>");
document.write("----------------------------------------------<br>");
p1.fornavn = "hans"

document.write(p1.fornavn+"<br>");
document.write(p1.efternavn+"<br>");
document.write(p1.navn+"<br>");
document.write(p1.navn()+"<br>");

</script>

</body>
</html>


Lasse Reichstein Nie~ (29-01-2007)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 29-01-07 19:11

OleHaahr@gmail.com writes:


> <script LANGUAGE=Javascript>

<script type="text/javascript">
(type-attributten er påkrævet i korrekt HTML, og language-attributten
er unødvendig).

> function Person (fornavn, efternavn)
> {
> this.fornavn = fornavn;
> this.efternavn = efternavn;
> this.navn = helenavnet;

Her sætter du "navn" til en funktion. Det er fint.

>
> function helenavnet()
> {
> this.fornavn+" "+this.efternavn;

return this.fornavn+" "+this.efternavn; // husk at returnere resultatet

> }
> }
>
> var p1 = new Person("ole","Andersen");
> document.write(p1.fornavn+"<br>");
> document.write(p1.efternavn+"<br>");
> document.write(p1.navn+"<br>");

document.write(p1.navn() + "<br>"); // husk at kalde metoden

> document.write("----------------------------------------------<br>");
> p1.fornavn = "hans"
> document.write(p1.fornavn+"<br>");
> document.write(p1.efternavn+"<br>");
> document.write(p1.navn+"<br>");

document.write(p1.navn() + "<br>"); // ditto


> Hvad i alverden går der galt ??

Prøv ovenstående ændringer.

Det er vigtigt at "hele navnet" først beregnes når man beder om det.
Derfor lader du "navn" pege på kode der beregner navnet (en funktion)
i stedet for, som først, en færdigberegnet værdi. Så langt er helt
rigtigt.
Så mangler du bare at kalde den funktion rigtigt og sørge for at den
giver den beregnede værdi med tilbage.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste