eval-anweisung geht nur zusammen mit alert-meldung
tina
- javascript
Hallo,
ich hoffe ihr könnt mir helfen.
ich sitzt schon eine weile an folgendem problem.
ich benutzte eine eval-anweisung um eine select-box mit optionen wieder zufüllen.
dabei soll ein bestimmter eintrag(xy) makiert werden.
und es funktioniert alles wunderbar wenn ich eine alert-meldung ausgeben lasse.
wenn keine alert-meldung kommt, dann makiert er mir irgendwas.
ich habe schon versucht die anweisung ohne eval hinzubekommen, aber das klappte nicht.
kann mir jemand helfen oder zeigen wie ich die anweisung ohne eval hin bekommen.
vielen Dank im voraus.
tina
<script src="test.js" type="text/javascript"></script>
<script language="JavaScript" type="text/JavaScript">
testarray[0][0] = "1";
testarray[0][1] = "grasgrün";
testarray[0][2] = "1";
testarray[1][0] = "4";
testarray[1][1] = "Silber";
testarray[1][2] = "1";
testarray[2][0] = "2";
testarray[2][1] = "rot";
testarray[2][2] = "2";
testarray[3][0] = "5";
testarray[3][1] = "blau";
testarray[3][2] = "2";
testarray[4][0] = "7";
testarray[4][1] = "grasgrün";
testarray[4][2] = "2";
function testEval()
{
//alert("drin");
xy = 4;
for(index = 0; index< testarray.length; index++)
{
var text =testarray[index][1];
if(testarray[index][0] == xy)
{
insertOption("auswahl",String(text),true,testarray[index][0])
}else
{
insertOption("auswahl",String(text),false,testarray[index][0])
}
}
}
</script>
</head>
<body>
<form name="form1" action="" method="get">
<select name="auswahl" size="1">
<option value="1">hallo</option>
<option value="2">du</option>
<option value="3">da</option>
</select>
</form>
<script type="text/javascript">
testEval()
</script>
</body>
</html>
//in der test.js
function insertOption(para,Wert,selected,para2)
{
NeuerEintrag = new Option(Wert,para2,selected,selected);
// alert("wenn diese meldung kommt, dann geht es");
help = "document.forms['form1'].elements['"+para+"'].options[document.form1."+para+".length] = NeuerEintrag";
eval(help);
}
function insertOption(para,Wert,selected,para2)
{NeuerEintrag = new Option(Wert,para2,selected,selected);
// alert("wenn diese meldung kommt, dann geht es");
help = "document.forms['form1'].elements['"+para+"'].options[document.form1."+para+".length] = NeuerEintrag";
eval(help);}
eval ist hier absolut nicht nötig (wo habt ihr das eigentlich alle her? ich kenn keine Doku in der eval verwendet wird um einfache document oder window Zugriffe zu machen)
var tmp = document.forms['form1'].elements[para];
help = tmp.options[tmp.length] = NeuerEintrag;
Ansonsten läßt sich din Problem so wie du es schilderst nicht nachvoll ziehen, was ist denn die Fehlermeldung? was für Werte haben die Paramter? Was für eine Wert hat document.forms['form1']?
struppi.
Hallo Struppi,
eval ist hier absolut nicht nötig (wo habt ihr das eigentlich alle her? ich kenn keine Doku in der eval verwendet wird um einfache document oder window Zugriffe zu machen)
Ich aber: http://selfhtml.teamone.de/dhtml/modelle/anzeige/ichkreis.htm
Da hatte ich es her, ich weiß noch, dass ich mich vor einiger Zeit darüber auch mal mit dir gezofft habe.
Du hast ja so recht ;-))
Grüße aus Barsinghausen,
Fabian
Hallo tina,
ich habe dir mal einen Vorschlag kommentiert, und hoffe, du kommst mit den spärlichen Kommentaren klar:
<script type="text/javascript">
var neu, testarray;
function init() {
neu = document.form1.auswahl;
testarray = new Array(5); // Array definieren
for (var i = 0; i < 5; i++) {
testarray[i] = new Array(); // mehrdimensionales Array definieren
}
testarray[0][0] = ["1", "eins"]; // so hast die Möglichkeit, value und text zu ändern
testarray[0][1] = ["grasgrün", "text"];
testarray[0][2] = ["1", "eins"];
testarray[1][0] = ["4", "vier"];
testarray[1][1] = ["Silber", "text"];
testarray[1][2] = ["1", "eins"];
testarray[2][0] = ["2", "zwei"];
testarray[2][1] = ["rot", "text"];
testarray[2][2] = ["2", "zwei"];
testarray[3][0] = ["5", "fünf"];
testarray[3][1] = ["blau", "text"];
testarray[3][2] = ["2", "zwei"];
testarray[4][0] = ["7", "sieben"];
testarray[4][1] = ["grasgrün", "text"];
testarray[4][2] = ["2", "zwei"];
}
function testEval(sel) {
neu.length = 0; // Aktuelle options loeschen
for(var i = 0; i < testarray[sel].length; i++) { // Liste neu aufbauen
neu[i] = new Option(testarray[sel][i][1], testarray[sel][i][0]);
neu[i].selected = true; // Eintrag selektieren
}
}
/* Hier weiss ich nicht, was du vorhast: Sollen die vorhandenen options gelöscht und durch neue ersetzt werden, oder sollen die neuen unten drangehängt werden? Welcher Eintrag soll selektiert werden? Auf jeden Fall siehst du, wie man das Ganze um ein paar unnötige Funktionen kürzen kann und wie man ohne eval auskommt.*/
</script>
</head>
<body onload="init()">
<form name="form1" action="">
<select name="auswahl" size="1" onchange="testEval(this.options.selectedIndex)">
<option value="1">hallo</option>
<option value="2">du</option>
<option value="3">da</option>
</select>
</form>
</body>
</html>
Grüße
pi