Toon posts:

[javascript] selectbox vullen vanuit remote

Pagina: 1
Acties:

Verwijderd

Topicstarter
Op de hoofdpagina (opener) heb ik een formulier met een listbox (id: listbox).


Deze listbox moet ik adhv bepaalde acties vullen vanuit een remote-window.
Deze remote-window wordt geopend als je op een knop drukt.
In dat remote window wordt een javascript array gevuld met gegevens (values + text) adhv een mysql-opdracht.

Deze gegevens moeten in de listbox op de 'opener' worden geplaatst.

De code in de remote is:

code:
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
35
36
37
38
39
40
41
<script language="JavaScript">
<!--
var wDoc            = window.opener.document;
var theField        = wDoc.getElementById('listbox');
var theListValue = new Array();
var theListText   = new Array();

// Eerst de listbox op de 'opener' legen
function clearListbox(theField){  
  for (var i=theField.length-1; i>=0; i--){
    theField.options[i] = null;
  }
  theField.selectedIndex  = -1;
}

clearListbox(theField);

// De gegevens voor de nieuwe listbox zijn:
var theListValue = new Array();
var theListText   = new Array();

theListValue[0] = 1;
theListValue[1] = 2;
theListValue[2] = 3;
theListValue[3] = 4;

theListText[0] = 'een';
theListText[1] = 'twee';
theListText[2] = 'drie';
theListText[3] = 'vier';

function fillListbox(theField, theListValue,theListText){
  for (var i=0; i<theListValue.length; i++){
    theField.options[theField.options.length+i] = new Option(theListValue[i],theListText[i]);   
  }
}

// En de listbox vullen:
fillListbox(theField, theListValue, theListText);
//-->
</script>


Ik had gedacht dat dit zou moeten werken, maar nee.
Ik krijg een melding:

"de server heeft een uitzondering geretourneerd."

Weet iemand wat ik fout doe? Ik kom er echt niet uit namelijk!

Het volgende script werkt namelijk wel (werkt gewoon in 1 pagina) en is mijns inziens gelijk aan het bovenstaande:

code:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function clearListbox(){  
  theField  = document.getElementById('listbox');
  theLength = theField.options.length;
  for (var i=theField.length-1; i>=0; i--){
     theField.options[i] = null;
  }
  theField.selectedIndex  = -1;  
}

function fillListbox(){
  clearListbox();
  theField  = document.getElementById('listbox');
  theLength = theField.options.length;
  
  theText = new Array();
  theText[0] = 'auto';
  theText[1] = 'fiets';
  theText[2] = 'brommer';
  theText[3] = 'scooter';
  
  theValue = new Array();
  theValue[0] = '10';
  theValue[1] = '20';
  theValue[2] = '30';
  theValue[3] = '40';
  
  for(var i=0; i<theValue.length; i++){
     var optionName = new Option(theValue[i], theText[i])
     theField.options[theLength+i] = optionName;     
  }
}
//-->
</script>
</head>

<body>
<form action="" method="post" name="frm" id="frm">
  <select name="listbox" id="listbox">
    <option value="1">value 1</option>
    <option value="2">value 2</option>
    <option value="3">value 3</option>
    <option value="4">value 4</option>
    <option value="5">value 5</option>
  </select>
</form>
<input name="legen" type="button" value="legen" onMouseUp="javascript:clearListbox();">
<input name="vullen" type="button" value="vullen" onMouseUp="javascript:fillListbox();">
</body>
</html>

[ Voor 13% gewijzigd door Verwijderd op 11-06-2003 14:19 ]


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

"de server heeft een uitzondering geretourneerd."
Bij client-side bewerkingen krijg je normaalgesproken niet zulke meldingen. Je geeft aan dat je wat gegevens uit een database trekt; ik zou daar als eerste naar kijken.

Today's subliminal thought is:


Verwijderd

Topicstarter
Nah, das gewoon een standaard php-scriptje wat ik altijd gebruik ... niets aan de hand, dat werkt 110% zeker goed.

De foutmelding krijg ik overigens bij de regel 3 van de functie:

PHP:
1
2
3
4
5
function fillListbox(theField, theListValue,theListText){
  for (var i=0; i<theListValue.length; i++){
    theField.options[theField.options.length+i] = new Option(theListValue[i],theListText[i]);   
  }
}


Als ik echter dit ook in de for-loop zet:
alert("stap " + i + ":" + theListValue.length);

Krijg ik 2x stap 0 te zien.
Ik denk dat de fout daarin zit, maar waarom doet ie die 0 2x!?

[ Voor 24% gewijzigd door Verwijderd op 11-06-2003 14:39 ]


Verwijderd

Topicstarter
Nou leuk, het zat hem dus in de manier van de pop-up openen in ieder geval, daarom werd de 0 2x getoond ... verder puzzelen maar weer.

Verwijderd

Topicstarter
Welnee, Ik heb de functie fillListbox nu zo:

En nu werkt het ALLEEN in Netscape!

PHP:
1
2
3
4
5
function fillListbox(theListValue,theListText){
  for (var i=0; i<theListValue.length; i++){
    theField.options[theField.options.length] = new Option(theListText[i],theListValue[i]);
  }
}


Wat is het verschil met IE?! in IE krijg ik nog steeds die melding!