Hiho!
Z. Z. Arbeite ich ein JS-Tutorial durch.
Nun habe ich eine Aufgabe durchgeführt, die bei mir aber leider nicht klappt. Beim Quelltext der Website (kopiert) aber schon - Allerdings kann ich nicht feststellen, WARUM mein Kode nicht funktioniert.
Das Ganze scheint bei mir schon daran liegen, dass entweder nichts in meinem Array steht oder ich es nicht vernünftig schaffe auszulesen.
Meins:
Meine Schleife wird nicht durchlaufen, meine.Buecher.lenght ist "undefined".
Lösung:
Z. Z. Arbeite ich ein JS-Tutorial durch.
Nun habe ich eine Aufgabe durchgeführt, die bei mir aber leider nicht klappt. Beim Quelltext der Website (kopiert) aber schon - Allerdings kann ich nicht feststellen, WARUM mein Kode nicht funktioniert.
Das Ganze scheint bei mir schon daran liegen, dass entweder nichts in meinem Array steht oder ich es nicht vernünftig schaffe auszulesen.
Meins:
HTML:
<script language="JavaScript" type="text/javascript">
function Einband(pFarbe, pArt)
{
this.Farbe = pFarbe;
this.Art = pArt;
}
function Buch(pTitel, pVerlag, pSeiten, pFarbe, pArt)
{
this.Titel = pTitel;
this.Verlag = pVerlag;
this.Seiten = pSeiten;
this.Einband = new Einband(pFarbe, pArt);
}
function hinzufuegen(pTitel, pVerlag, pSeiten, pFarbe, pArt)
{
this[this.length] = new Buch(pTitel, pVerlag, pSeiten, pFarbe, pArt);
}
meineBuecher.hinzufuegen = hinzufuegen;//("pTitasdel", "pVerlag", "pSeiten", "pFarbe", "pArt");
meineBuecher.hinzufuegen("JavaScript Workshop",
"Addison-Wesley", 300,
"gelb", "Taschenbuch");
meineBuecher.hinzufuegen("JavaScript 1.2",
"Addison-Wesley", 500,
"weiß", "gebunden");
for (var i = 0; i < meineBuecher.lenght; i++)
{
document.writeln('Das Buch "'+meineBuecher[i].Titel+'" ');
}
Lösung:
HTML:
<!--
/* * * Vorbereitende Funktionen * * */
// Konstruktorfunktion fuer Einbaende
function Einband(pFarbe, pArt)
{
this.Farbe = pFarbe;
this.Art = pArt;
}
// Konstruktorfunktion fuer Buecher
function Buch(pTitel, pVerlag, pSeiten, pFarbe, pArt)
{
this.Titel = pTitel;
this.Verlag = pVerlag;
this.Seiten = pSeiten;
this.Einband = new Einband(pFarbe, pArt);
}
// fuegt als Methode einer Liste von Buechern neue hinzu
function hinzufuegen(pTitel, pVerlag, pSeiten, pFarbe, pArt)
{
this[this.length] = new Buch(pTitel, pVerlag,
pSeiten, pFarbe, pArt);
}
/* * * Beginn der Abarbeitung * * */
// erst mal nachsehen, ob der Browser Arrays kennt
if (window.Array)
{
// eine "Liste" fuer all meine Buecher anlegen
meineBuecher = new Array();
// Methode fuer das Hinzufuegen definieren
meineBuecher.hinzufuegen = hinzufuegen;
// einzelne Buecher eintragen
// hier muss ich spaeter neue einfuegen
with (meineBuecher)
{
hinzufuegen("JavaScript Workshop",
"Addison-Wesley", 300,
"gelb", "Taschenbuch");
hinzufuegen("JavaScript 1.2",
"Addison-Wesley", 500,
"weiß", "gebunden");
}
}
else
// zum Abschluss noch der Hinweis
// fuer Leute mit aelteren Browsern:
alert('Ihr Browser ist recht alt, kennt kein Array!');
// -->
</script>
</head>
<body>
<h1>Alle meine Bücher</h1>
<script language="JavaScript" type="text/javascript">
<!--
// diese Funktion generiert eine Auflistung aller Buecher
document.write(meineBuecher.length);
function zeigeBuecher()
{
var Aus = '<ol>';
for (var i = 0; i < meineBuecher.length; i++)
{
document.write("test");
Aus += '<li>' + meineBuecher[i].Titel;
Aus += '<ul>';
Aus += '<li>' + meineBuecher[i].Verlag + '</li>';
Aus += '<li>ca. : ' + meineBuecher[i].Seiten;
Aus += ' Seiten</li>';
Aus += '<li>' + meineBuecher[i].Einband.Art + '\/';
Aus += meineBuecher[i].Einband.Farbe + '</li>';
Aus += '</ul>';
}
Aus+= '</ol>\n';
Aus+= '<p>Ich besitze ';
Aus += meineBuecher.length + ' Bücher.</p>';
return Aus;
}
// existiert meineBuecher ueberhaupt?
if (window.meineBuecher)
var Ausgabe = zeigeBuecher();
document.writeln(Ausgabe);