molily: Javascript Auslesen von Select mit Array

Beitrag lesen

Hallo,

<table width="50%">
<form name="voting">

Du kannst kein form in ein table schachtelt, das form muss um das table herum (am Ende machst du das auch).

<script language="JavaScript">

Das sollte besser <script type="text/javascript"> lauten.

for (var i=0;i<spieler.length;i++){

...

document.write("<select name='Playerauswahl' id='Playerauswahl'>");

Du erzeugst hier mehrere select-Element mit derselben ID. das geht natürlich nicht. Eigentlich brauchst du diese ID auch nicht.

var playervalue = voting.Playerauswahl.text;

Der Zugriff auf das Formular sollte standardgemäß mit document.forms.voting oder document.getElementById('voting') erfolgen. Deine Ansprechweise über eine global Eigenschaft (einfach voting) ist eine IE-Erfindung und wird von den Browsern nur noch geduldet.

document.write(" Auswahl : " + playervalue) + "<br>";

In Langschreibweise greifst du auf
document.forms.voting.elements.Playerauswahl
zu. Das gibt dir nicht direkt ein select-Element, sondern einen Array mit allen select-Elementen, die name="Playerauswahl" besitzen. Davon hast du ja drei. Diesen Array kannst du durchlaufen:

var selects = document.forms.voting.Playerauswahl;  
for (var i = 0, l = selects.length; i < l; i++) {  
   alert('Spieler: ' + spieler[i] + ', Wertung: ' + selects[i].value);  
}

selects[i] gibt dir also jeweils ein select-Element zurück. Den internen Wert des Feldes kannst du mit http://de.selfhtml.org/javascript/objekte/elements.htm#value@title=value auslesen.

Wenn du hingegen den angezeigten Text willst (also »15 Punkte« anstatt nur »15«), dann müsstest du über http://de.selfhtml.org/javascript/objekte/options.htm@title=options gehen.

var selects = document.forms.voting.Playerauswahl;  
for (var i = 0, l = selects.length; i < l; i++) {  
   var select = selects[i];  
   var selectWert = select.options[select.[ref:self812;javascript/objekte/options.htm#selected_index@title=selectedIndex]].[ref:self812;javascript/objekte/options.htm#text@title=text];  
   alert('Spieler: ' + spieler[i] + ', Wertung: ' + selectWert);  
}

Mathias