Hallo,

Ik probeer de waarden van een selectfield (multiple) in een javascript array te proppen, maar dit lukt mij niet. Ziet iemand wat ik verkeerd doe?


<table>
<tr>
	<td>
		<select name="email" id="email" multiple="multiple" size="5" style="width:150px;" >
		<?php 
		$rsgebr = mysql_query("SELECT ".GEBR_NAAM.", ".GEBR_TUSVG.", ".GEBR_ACHTERNAAM.", ".GEBR_EMAIL." FROM ".GEBR." WHERE ".GEBR_WERKZAAM." = 1 ORDER BY ".GEBR_ACHTERNAAM);
		while($rowgebr = mysql_fetch_array($rsgebr)) { ?>
			<option value="<?php echo $rowgebr[GEBR_EMAIL]; ?>"><?php echo $rowgebr[GEBR_ACHTERNAAM].", ".$rowgebr[GEBR_NAAM]." ".$rowgebr[GEBR_TUSVG]; ?></option>
		<?php } ?>
		</select>
	</td>
</tr>
</table>
<script type="text/JavaScript">
var selected= new Array();
var sum="";
function getMultipleSelection(elementName,array){ 
    var mySelect = document.getElementsByName[elementName];
    for(j = 0; j  < mySelect.options.length; j++) { 
        if(mySelect.options[j].selected) { 
            selected.push(mySelect.options[j].value); 
        } 
    } 
    if(array != 'true') return selected.toString(); 
    else return selected; 
}
getMultipleSelection('email',true);
for(var j = 0; j < selected.length; ++j) {
    if (selected.options[j].selected==true) {
        sum += '&srvcnr'+j+'='+selected.options[j].value;
    }
} 
</script>


edit;
Ik krijg de volgende foutmelding volgens IE;

Bericht: 'options' is leeg of geen object
Regel: 1281
Teken: 17
Code: 0
URI: www.bla.nl
Kan echt niemand mij helpen? Ik zie het gewoon echt niet.. :(
je noemt je array selection, en je pushed de gegeven in selected
of zie ik het nu fout?
Probeer dit eens.


var selected = new Array();
var sum = "";

function getMultipleSelection(elementName, array)
{ 
    var mySelect = document.getElementsByName[elementName];
	
    for(var j = 0; j < mySelect.options.length; j++)
	{ 
        if(mySelect.options[j].selected)
		{ 
            selected.push(mySelect.options[j].value); 
        } 
    } 
	
    if(array != 'true')
	{
		return selected.toString();
	}
    else
	{
		return selected; 
	}
}

getMultipleSelection('email', true);

for(var j = 0; j < selected.length; j++)
{
    if(selected.options[j].selected == true)
	{
        sum += '&srvcnr'+j+'='+selected.options[j].value;
    }
}
@koen;
Klopt foutje :) In mijn eigen script had ik het wel al gezien, dus het maakte geen verschil, tnx

@Mr. Ark
Ik kon niet zo snel verschil ontdekken, dus ik heb em even ge-copy-paste. De output blijft hetzelfde.. :( tnx!
wat voor name geef je mee als naam waar je
getElementByName(elementname) gebruikt?
misschien zit t daar?

edit nvm, las te snel
zet bij je script tag ook de language neer
<script type="text/javascript" language="javascript">
Waar haal jij options vandaan? hij geeft aan dat die leeg of geen object is. Wat moet er gebeuren met die options?
@mr ark,
getElementByName seleteerd de <select>
options is dus de <option> tag

<?php
while($rowgebr = mysql_fetch_array($rsgebr)) 
{
echo '<option value="'.$rowgebr[GEBR_EMAIL].'">'.$rowgebr[GEBR_ACHTERNAAM].' '.$rowgebr[GEBR_NAAM].' '.$rowgebr[GEBR_TUSVG].'</option>';
}
?>

is btw makkelijker
@koen
language meegeven maakt geen verschil, bovendien krijg ik er met XHTML 1.0 foutmeldingen mee.

Hij wil gewoon niet :)
oeps, had mijn eigen test verkeerd bekeken sorry :P

btw, beetje gok hier hoor, maar als je de '.value' weghaalt bij je verwijzing:

selected.push(mySelect.options[j].value);


selected.push(mySelect.options[j]);

bedoel ik dus

Ik heb hem een klein beetje aangepast, ook met jouw tip, Koen;

function getMultipleSelection(elementName, array) { 
    var mySelect = document.getElementsByName(elementName);
	var selectie = new Array();
    for(var j = 0; j < mySelect.options.length; j++)
    { 
        if(mySelect.options[j].selected)
        { 
            selectie.push(mySelect.options[j]); 
        } 
    } 
    return selectie; 
    
}
getMultipleSelection('email[]', 'true');
for(var k = 0; k < selectie.length; k++) {
    if(selectie.options[k].selected == true) {
        sum2 += '&email'+k+'='+selectie.options[k];
    }
}


Nu krijg ik de volgende fout;

Bericht: 'options.length' is leeg of geen object
Regel: 1184
Teken: 22
Code: 0
URI: http://bla.com


Ik denk nu dat ik het aantal options verkeerd tel in de select array..

Reageren