multple selectfield in array
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?
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
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?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<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>
<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
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
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?
of zie ik het nu fout?
Probeer dit eens.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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;
}
}
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;
}
}
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
@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!
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">
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">
Gewijzigd op 01/01/1970 01:00:00 door koen
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
is btw makkelijker
getElementByName seleteerd de <select>
options is dus de <option> tag
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
while($rowgebr = mysql_fetch_array($rsgebr))
{
echo '<option value="'.$rowgebr[GEBR_EMAIL].'">'.$rowgebr[GEBR_ACHTERNAAM].' '.$rowgebr[GEBR_NAAM].' '.$rowgebr[GEBR_TUSVG].'</option>';
}
?>
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
Gewijzigd op 01/01/1970 01:00:00 door koen
@koen
language meegeven maakt geen verschil, bovendien krijg ik er met XHTML 1.0 foutmeldingen mee.
Hij wil gewoon niet :)
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:
bedoel ik dus
btw, beetje gok hier hoor, maar als je de '.value' weghaalt bij je verwijzing:
bedoel ik dus
Ik heb hem een klein beetje aangepast, ook met jouw tip, Koen;
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..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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];
}
}
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..
mySelect.options.length
vervang dat eens met
mySelect.length
??
dit leest uit hoeveel opties er in mySelect staan.
dan kan je met mySelect[] die optie uitlezen.
hope this helps
ps.
firefox + webdevelopers-toolbar heeft een mooie controle op je javascript, en geeft weer of en waar die fout gaat.
vervang dat eens met
mySelect.length
??
dit leest uit hoeveel opties er in mySelect staan.
dan kan je met mySelect[] die optie uitlezen.
hope this helps
ps.
firefox + webdevelopers-toolbar heeft een mooie controle op je javascript, en geeft weer of en waar die fout gaat.
Gewijzigd op 01/01/1970 01:00:00 door koen
jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa hij doet het! :) :)
Het weas heel iets anders;
Ik heb hem gaandeweg uit de functie gehaald met debuggen, maar firefox hielp al heel veel;
Het weas heel iets anders;
Ik heb hem gaandeweg uit de functie gehaald met debuggen, maar firefox hielp al heel veel;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
var selectie = new Array();
var sum2 = '';
var mySelect = document.getElementById('email');
for(var j = 0; j < mySelect.options.length; j++)
{
if(mySelect.options[j].selected == true)
{
selectie.push(mySelect.options[j].value);
}
}
for(var k = 0; k < selectie.length; k++) {
sum2 += '&email'+k+'='+selectie[k];
}
var sum2 = '';
var mySelect = document.getElementById('email');
for(var j = 0; j < mySelect.options.length; j++)
{
if(mySelect.options[j].selected == true)
{
selectie.push(mySelect.options[j].value);
}
}
for(var k = 0; k < selectie.length; k++) {
sum2 += '&email'+k+'='+selectie[k];
}
je hebt van getElementByName, ById gemaakt? thats it??
Nee kijk ook goed naar de laatste for-lus
De larray die ik zelf aanmaak (selectie) heeft geen options.. :)
De larray die ik zelf aanmaak (selectie) heeft geen options.. :)
mooi dat het nu werkt :D (Y)
Tja idd... bomen... bos.. =D




