Select-Menü mit Array
Sebastian Becker
- javascript
Hallo,
folgende Aufgabe möchte ich lösen: Ein Select-Menü soll aus den Inhalten eines Arrays erzeugt werden. Hier das leider nicht funktionierende Script:
<html>
<head>
<script language="JavaScript">
var items = new Array (
new item('Thema 1','adress1.htm'),
new item('Thema 2','adress2.htm'),
new item('Thema 3','adress3.htm'),
new item('Thema 4','adress4.htm')
);
function items(theme,adress)
{this.theme=theme;this.adress=adress;}
function go(thema)
{document.location.href=adress;}
function writemenu()
{
document.write('<form name="form">');
document.write('<select name="link" onChange="go(this.form.link.options[this.form.link.options.selectedIndex].value)"');
for (i=1; i<items.length; i++)
{
document.write('<option value=items[i].adress>');
document.write(items[i].name);
document.write('</option>');
}
document.write('</select>');
document.write('</form>');
}
</script>
</head>
<body bgcolor="#FFFFFF">
<script language="JavaScript">
writemenu()
</script>
</body>
</html>
Irgendwo muß ein tückischer Fehler versteckt sein, den ich nicht finden kann. Vielleicht hat jemand eine Idee?!
Danke und Grüße,
Sebastian Becker
Hallo Sebastian,
var items = new Array (
new item('Thema 1','adress1.htm'),
^^^^^^
function items(theme,adress)
^^^^^^
Irgendwo muß ein tückischer Fehler versteckt sein, den ich nicht finden kann. Vielleicht hat jemand eine Idee?!
Könnte er vielleicht an der gekennzeichneten Stelle stecken?
Viele Grüße
Antje
Hallo, Antje,
Danke für den Hinweis! Soll ich den so interpretieren, daß das Objekt und die Funktion namensgleich sein sollen? Also das funktioniert bei mir leider auch nicht.
Irgenwie habe ich das Ganze mit den Arrays noch nicht so richtig verstanden. Wenn denn wenigstens das Script laufen würde, auch wenn ich`s nicht so ganz kapier ...
Na, mal weiterexperimentieren - oder hat noch jemand einen‚Tip?
Grüße,
Sebastian
Hi Sebastian,
wie waers damit:
var items = new Array();
items["Thema 1"] = "adress1.htm";
...
function go(thema)
{document.location.href=items[thema];}
MfG Simon
Hallo,
also, nach dem freundlichen Hinweis sieht mein Script jetz so aus:
<html>
<head>
<script language="JavaScript">
// array
var items = new Array (
items["Thema 1"] = "adress1.htm";
items["Thema 2"] = "adress2.htm";
items["Thema 3"] = "adress3.htm";
items["Thema 4"] = "adress4.htm";
);
function items(theme,adress)
{this.theme=theme;this.adress=adress;}
function go(thema)
{document.location.href=items[thema];}
function writemenu()
{
document.write('<form name="form">');
document.write('<select name="link" onChange="go(this.form.link.options[this.form.link.options.selectedIndex].value)"');
for (i=1; i<items.length; i++)
{
document.write('<option value=items[i].adress>');
document.write(items[i].adress);
document.write('</option>');
}
document.write('</select>');
document.write('</form>');
}
</script>
</head>
<body bgcolor="#FFFFFF">
<script language="JavaScript">
writemenu()
</script>
</body>
</html>
Leider gibt es immer noch zwei Fehlermeldungen :-( .
Oder hab' ich da was falsch verstanden?
Danke für die Hilfe,
Sebastian Becker
Hallo Sebastian,
ich habe dein erstes Script etwas angepaßt, jetzt sollte es tun was du willst:
<html>
<head>
<script language="JavaScript">
var items = new Array (
new item('Thema 1','adress1.htm'),
new item('Thema 2','adress2.htm'),
new item('Thema 3','adress3.htm'),
new item('Thema 4','adress4.htm')
);
function item(theme,adress)
{this.theme=theme;this.adress=adress;}
function go(adresse)
{
document.location.href=adress;}
function writemenu()
{
document.write('<form name="form">');
document.write('<select name="link" onChange="go(this.form.link.options[this.form.link.options.selectedIndex].value)">');
for (var i=0; i<items.length; i++)
{
var y='<option value="'+items[i].adress+'">'+items[i].theme;
document.write(y);
}
document.write('</select>');
document.write('</form>');
}
</script>
</head>
<body bgcolor="#FFFFFF">
<script language="JavaScript">
writemenu()
</script>
</body>
</html>
Die Änderungen waren minimal, du wirst sie sicher selbst finden.
Viele Grüße
Antje
<img src="http://pc-anfaenger.de/pca/sam/pcanfaenger.gif" alt="">
Danke,
ich werd's gleich testen und gucken, was ich falsch gemacht habe.
Grüße,
Sebastian
Hallo,
der Test führte zu der JavaScript-Fehlermeldung "adress ist nicht definiert" beim Auswählen einer Option. :-(
Weiter grübelnd ...
Sebastian
Hallo,
der Test führte zu der JavaScript-Fehlermeldung "adress ist nicht definiert" beim Auswählen einer Option. :-(
Weiter grübelnd ...
Sebastian
Schau dir doch mal 'function go(adresse)' an... :)
^
MfG, fool
Hallo, fool,
Schau dir doch mal 'function go(adresse)' an... :)<
^
Eigentlich muß die Klammer wohl leer sein - oder soll es etwa "adress" heißen ?! ...
Danke für den Hinweis, aber der Grund für die Fehlermeldung muß irgendwoanders liegen, denn sie bezieht sich auf "adress" und nicht "adresse".
Grüße,
Sebastian Becker
Hi Sebastian!
[...]oder soll es etwa "adress" heißen ?! ...
genau das!
Danke für den Hinweis, aber der Grund für die Fehlermeldung muß irgendwoanders liegen, denn sie bezieht sich auf "adress" und nicht "adresse".
Doch, das ist der Grund! adress ist dem Browser nicht bekannt, also muss hier adresse stehen. Antje hat sich nur vertippt.
MfG Simon
Hi Simon.
Danke für den Hinweis, aber der Grund für die Fehlermeldung muß irgendwoanders liegen, denn sie bezieht sich auf "adress" und nicht "adresse".
Na ich hatte schon gehofft, dass du ein wenig mitdenkst.
Korrekt muss die Function folgendermassen aussehen:
function go(adress) {
document.location.href = adress;
}
Vielleicht helfen ein paar Lektionen JavaScript-Basics? :o)
MfG, fool
Seas mal wieder,
so geht's, wenn auch (etwas) umständlicher:
------------------------------------------------
<html>
<head>
<script language="JavaScript">
var item = new Array();
item[0] = new Array()
item[0][0] = 'thema1';
item[0][1] = 'adress1.htm';
item[1] = new Array()
item[1][0] = 'thema2';
item[1][1] = 'adress2.htm';
item[2] = new Array()
item[2][0] = 'thema3';
item[2][1] = 'adress3.htm';
item[3] = new Array()
item[3][0] = 'thema4';
item[3][1] = 'adress4.htm';
function go(thema)
{document.location.href=thema;}
function writemenu()
{
document.write("<form name="form">");
document.write("<select name="link" onChange="go(this.form.link.options[this.form.link.options.selectedIndex].value)"");
for (i=0; i<item.length; i++)
{
document.write("<option value="" + item[i][1] + "">");
document.write(item[i][0]);
document.write("</option>");
}
document.write("</select>");
document.write("</form>");
}
</script>
</head>
<body bgcolor="#FFFFFF">
<script language="JavaScript">
writemenu();
</script>
</body>
</html>
-----------------------------------------------------------
cya,
Harry