for Schleife
Dash
- javascript
0 Struppi0 Dash0 Dash0 Struppi0 Dash0 Axel Richter0 Dash0 Axel Richter0 Struppi
Hallo, hab fogendes Problem:
Script sollte die fünf auswahlfelder mit den werten 1-5 füllen und bei der ersten die 1 aktiv wählen, bei der zweiten die 2 usw.
Die auswahlfelder werden jedoch mit 1,1,2,3,4 vorselektiert.
Source code:
<html>
<head>
<title>Untitled</title>
</head>
<body>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<script language="JavaScript">
<!--
for(var i = 1; i < 6; i++)
{
//alert("");
for(var j = 1; j < 6; j++)
{
if(i==j){
NewOption = new Option(j,j,false,true);
}else{
NewOption = new Option(j,j,false,false);
}
document.getElementsByName('columnPos')[i-1].options[document.getElementsByName('columnPos')[i-1].length] = NewOption;
}
}
//-->
</script>
</body>
</html>
P.S. Im Netscape funktionierts, im IE 5 nicht. Komisch: mit der alert("") anwesiung funktionierts auch im IE
<html>
<head>
<title>Untitled</title>
</head><body>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
<select name="columnPos" size="1" onchange=""; onFocus=""></select>
Das muss innerhalb von <form> ... </form>
gesetzt werden, denn erst dann kannst du darauf zu greifen (deshalb funktioniert es erst nach dem alert() ).
<script language="JavaScript">
Es lautet:
<script type="text/javascript">
<!--
for(var i = 1; i < 6; i++)
Du willst alle 'columnPos' Felder des Formulars durchgehen?
Das ist ein Array des Formulars.
alert(document.forms[0].columnPos.length) sagt dir wieviele Elemente es hat. Dann brauchst du auch keine Schleife mit festen Werten, sondern kannst Variabel arbeiten.
for(var i = 0; i < document.forms[0].columnPos; i++)
{
//alert("");
for(var j = 1; j < 6; j++)
{if(i==j){
NewOption = new Option(j,j,false,true);
}else{
NewOption = new Option(j,j,false,false);
Es reicht:
var newOption = new Option, j, j, false, (i==j));
}
document.getElementsByName('columnPos')[i-1].options[document.getElementsByName('columnPos')[i-1].length] = NewOption;
Formularfelder kannst du einfacher direkt ansprechen über document.forms[..]
document.forms[0].columnPos[i].options[j - 1] = newOption;
Struppi.
Vielen Dank
Cu Dash
Hallo Struppi
Habs ausprobiert, leider immer noch das gleiche Resultat. 1,1,2,3,4 anstatt 1,2,3,4,5
code:
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form name='colPos'>
<select name="columnPos" size="1" onchange=""; onFocus="">
</select>
<select name="columnPos" size="1" onchange=""; onFocus="">
</select>
<select name="columnPos" size="1" onchange=""; onFocus="">
</select>
<select name="columnPos" size="1" onchange=""; onFocus="">
</select>
<select name="columnPos" size="1" onchange=""; onFocus="">
</select>
</form>
<script type="text/javascript">
<!--
for(var i = 0; i < document.colPos.columnPos.length; i++)
{
//alert("");
for(var j = 0; j < 5; j++)
{
newOption = new Option(j+1,j+1,false,i==j);
document.colPos.columnPos[i].options[j] = newOption;
}
}
//-->
</script>
</body>
</html>
Hast du (oder jemand anderes) noch eine Idee?
Cu Dash
Hallo Struppi
Habs ausprobiert, leider immer noch das gleiche Resultat. 1,1,2,3,4 anstatt 1,2,3,4,5
code:
seltsam, ich hab den code so kopiert wie er da unten steht und bei mir kommen 5 select boxen mit den Werten 1-5. Das ist doch was du willst, oder?
Struppi.
Ja, alle haben die Auswahlmöglichkeiten 1,2,3,4,5. Beim laden soll beim ersten Auswahlfeld die 1, beim zweiten die 2, usw. vorselektiert sein.
Sehrwahrscheinlich hat da der IE ein Problem, denn mit dem Nettscape geht es. (Auch ohne das alert())
Cu Dash
Hallo,
Ja, alle haben die Auswahlmöglichkeiten 1,2,3,4,5. Beim laden soll beim ersten Auswahlfeld die 1, beim zweiten die 2, usw. vorselektiert sein.
Sehrwahrscheinlich hat da der IE ein Problem, denn mit dem Nettscape geht es. (Auch ohne das alert())
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">
<!--
function filloptions() {
for(var i = 0; i < document.colPos.columnPos.length; i++) {
for(var j = 0; j < 5; j++) {
newOption = new Option(j+1,j+1,false,i==j);
document.colPos.columnPos[i].options[j] = newOption;
}
}
}
//-->
</script>
</head>
<body onload="filloptions()">
<form name="colPos">
<select name="columnPos" size="1" onchange="" onFocus=""></select>
<select name="columnPos" size="1" onchange="" onFocus=""></select>
<select name="columnPos" size="1" onchange="" onFocus=""></select>
<select name="columnPos" size="1" onchange="" onFocus=""></select>
<select name="columnPos" size="1" onchange="" onFocus=""></select>
</form>
</body>
</html>
viele Grüße
Axel
Danke, das geht...
Nur, kannst du mir sagen wieso es nur per Funktionsaufruf funktioniert?
Cu Dash
Hallo,
Danke, das geht...
Nur, kannst du mir sagen wieso es nur per Funktionsaufruf funktioniert?
MSIE "verhaspelt" sich beim Seitenaufbau. Das Ereignis body.onload tritt offensichtlich spät genug ein. Mit dem alert() hast Du auch nichts anderes gemacht, als etwas Zeit zu schinden.
viele Grüße
Axel
Hallo,
Danke, das geht...
Nur, kannst du mir sagen wieso es nur per Funktionsaufruf funktioniert?
MSIE "verhaspelt" sich beim Seitenaufbau. Das Ereignis body.onload tritt offensichtlich spät genug ein. Mit dem alert() hast Du auch nichts anderes gemacht, als etwas Zeit zu schinden.
und seltsamerweise geht's bei mir im IE 4.0 auch ohne. aber mit dem onload ist es am sinnvollsten.
Struppi.