[JS] script maakt van een variabele een 'x'

Pagina: 1
Acties:

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Ik heb twee selectboxen gemaakt waarmee je de waardes uit de linker selectbox naar de rechter kunt sturen. De waardes uit de rechterbox kunnen hierna ook weer verwijderd worden.
Nu wil ik alle waardes in de rechterbox in een variabele stoppen en dat wil ik doen met hetvolgende script:::
JavaScript:
1
2
3
4
5
6
7
8
9
function updateField(){
  var medewerkers = document.getElementById('medewerkers');
  var FLOutput = document.getElementById('FLOutput');
  var tmp = '';
  for (var i = 0; i<=(FLOutput.length-1); i++) {
    tmp += FLOutput.options[i].value + ';';
  }
  medewerkers.value = tmp;
  }

Dit script doet in principe z'n werk, maarrrrr ipv dat hij de juiste waarde neemt (bijv. Piet Puk) neemt hij als waarde 'x'. Dit doet hij echter alleen met de waardes die op dat moment van de linker box naar de rechter zijn gehaald. De waardes die er al in stonden (gehaald uit de database) die geeft hij wel weer zoals het zou moeten.
Van beide boxen zijn de option values precies hetzelfde, dus daar kan het niet aan liggen neem ik aan.
PHP:
1
echo "<option value='".$Projectleden."'>".$Projectleden."</option>";

En met de volgende code haal ik de waarde van de linker box naar de rechter:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function addToList(listField, newText, newValue) {
   if ( newText == "" ) {
      alert("Selecteer alstublieft een waarde");
   } else {
      var len = listField.length++; // Increase the size of list and return the size
      listField.options[len].value = newValue;
      listField.options[len].text = newText;
      listField.selectedIndex = len; // Highlight the one just entered (shows the user that it was entered)
   } // Ends the check to see if the value entered on the form is empty

}

Ik neem aan dat dit alle code die er verder aan te pas komt, en ik hoop dat jullie mij kunnen helpen met waarom hij een 'x' neerzet ipv de juiste waarde.
Momenteel komt het er dus zo uit als 1 variabele:
Piet Puk;x;x;
ipv
Piet Puk;Klaas Vink;Andre Gevel;

Proud member of the Cosmic Cows


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Opties maak je normaliter aan met new Option() of dmv de DOM methods createElement en appendChild.
Verder moet je denk ik de listField.options.length hebben en niet de listField.length (idem in updateField()) en hoef je die niet te incrementen aangezien de offset 0-based is.

[ Voor 14% gewijzigd door crisp op 31-10-2005 08:57 ]

Intentionally left blank


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Beetje offtopic, maar naar mijn idee hou je er een rare manier van for schrijven op na:

Persoonlijk zou ik het herschrijven als for(var i = 0; i<length; i++)
Dat is iets sneller en je ziet meteen dat je door een array o.i.d. heenloopt.

Over je probleem, wat zijn de waarden van de parameters?

Fat Pizza's pizza, they are big and they are cheezy


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Ah oke, dat is dan weer een leer voor de volgende keer ;-)
Ik ben verder nog niet zover met javascript.
Maar verder is mijn probleem hier nog niet mee opgelost :/ Weet iemand misschien hoe ik dat kan oplossen?

Proud member of the Cosmic Cows


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

JKVA schreef op maandag 31 oktober 2005 @ 09:01:

Over je probleem, wat zijn de waarden van de parameters?

Fat Pizza's pizza, they are big and they are cheezy


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Okej, sorry 8)7
Bedoel je dus eigenlijk de waardes van de 'options' in mn selectbox??
Dat is eigenlijk wat ik ook al aangaf:
PHP:
1
2
3
<?
echo "<option value='".$Projectleden."'>".$Projectleden."</option>";
?>

Deze worden dus gewoon ge'echoot in m'n selectboxen en dat is ook wat ik uiteindelijk in mijn variabele wil terug vinden....

Of zit ik nou over iets heel anders te lullen dan dat wat jij wilde weten?? Zou je dan iets beter kunnen aangeven welke parameters je bedoelt ofsow? :-$

Proud member of the Cosmic Cows


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Volgens mij bedoelt JKVA de parameters van je javascript functie... het lijkt er op dat je het value attribute van je optie de waarde X meegeeft...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Nou, nog een gokje dan wat betreft de parameters ;)

Alle gegevens haalt hij uit deze selectbox met de betreffende waardes....
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
          <select name="listField" id="FLoutput" size="5" multiple="mutiple" ondblclick="removeFromList(document.getElementById('FLoutput'))" style= "width: 170px;" >
          <?
        $qryProjL= "SELECT * FROM projectleden WHERE [Project-Id] = ".$Project_id;
                                            
        if( $resProjL = odbc_exec($conn, $qryProjL) )
        {
          while ($obj = odbc_fetch_array($resProjL))
          { 
        //  echo '<pre>'.print_r($obj, 1).'</pre>';
          $Afkorting = $obj['Afkorting'] ;
        //  echo "$Afkorting ";
            if ($obj['Afkorting'] == "") 
                {
                $Projectleden = $obj['Volledigenaam'];
                }
            else
                {
                    $db1 = "C:\Inetpub\wwwroot\Projectdb\MainDB.mdb";
                    $conn1 = odbc_connect('DRIVER={Microsoft Access Driver (*.mdb)}; DBQ='.$db1, '', '');
                    $qryProjL1= "SELECT * FROM medewerker WHERE afkorting = '".$Afkorting."'";
                    $resProjL1 = odbc_exec($conn1, $qryProjL1);
                    while($obj1 = odbc_fetch_array($resProjL1))
                     {
                        $Projectleden = "$obj1[roepnaam] $obj1[tussenvoegsels] $obj1[naam]";
                     }
                }
             echo "<option value='".$Projectleden."'>".$Projectleden."</option>";
           }
        } 
        ?>
          </select> 

en nu hopen dat jullie me hiermee verder kunnen helpen....

Proud member of the Cosmic Cows


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Intentionally left blank


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Ja, daar had ik al wel naar gekeken en had die listField.length ook aangepast.. Ik neem aan dat je bedoelde FLOutput.length in FLOutput.option.length bij mijn updateFiel() en bij addToList() listField.length in listField.option.length.

En zoals ik ook al aangaf ben ik geen ster in JS, dus het aanmaken van een optie op de manier zoals jij bedoelt... zou je me daar mee kunnen helpen dan als je denkt dat dat de oplossing is..??

Wat ik momenteel als benodigde functies heb:::
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function addToList(listField, newText, newValue) {
   if ( newText == "" ) {
      alert("Selecteer alstublieft een waarde");
   } else {
      var len = listField.options.length++; // Increase the size of list and return the size
      listField.options[len].value = newValue;
      listField.options[len].text = newText;
      listField.selectedIndex = len; // Highlight the one just entered (shows the user that it was entered)
   } // Ends the check to see if the value entered on the form is empty

}

function updateField(){
  var medewerkers = document.getElementById('medewerkers');
  var FLOutput = document.getElementById('FLOutput');
  var tmp = '';
  for (var i = 0; i<=(FLOutput.options.length-1); i++) {
    tmp += FLOutput.options[i].value + ';';
  }
  medewerkers.value = tmp;
  }

Proud member of the Cosmic Cows


Verwijderd

JavaScript:
1
2
3
4
5
6
7
8
9
function addToList(listField, newText, newValue) {
   if ( newText == "" ) {
      alert("Selecteer alstublieft een waarde");
   } else {
      listField.options[listField.options.length] = new Option(newText, newValue);
      listField.selectedIndex = len; // Highlight the one just entered (shows the user that it was entered)
   } // Ends the check to see if the value entered on the form is empty

}

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Hmmmz, ook dit heeft nog niet tot succes geleid :'(
Verder niemand nog mogelijkheden hiervoor?

Proud member of the Cosmic Cows


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
ff een bescheiden schopje

Proud member of the Cosmic Cows


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Kun je laten zien waar en hoe je de functie addToList aanroept?

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 <select name="listField" id="FLinput" size="5" multiple="multiple" ondblclick="addToList(document.getElementById('FLoutput'),document.getElementById('FLinput').options[document.getElementById('FLinput').selectedIndex].value,'x')" style="width: 170px;">
                   <?

                    $db1 = "C:\Inetpub\wwwroot\Projectdb\MainDB.mdb";
                    $conn1 = odbc_connect('DRIVER={Microsoft Access Driver (*.mdb)}; DBQ='.$db1, '', '');
                    $qryProjL1= "SELECT * FROM medewerker";
                    $resProjL1 = odbc_exec($conn1, $qryProjL1);
                    while($obj1 = odbc_fetch_array($resProjL1))
                     {                      
                        $Projectleden = "$obj1[roepnaam] $obj1[tussenvoegsels] $obj1[naam]";
                        echo "<option value='".$Projectleden."'>".$Projectleden."</option>";                    
                     }

        ?>
               </select>
             </div></td>
         <td width="3%">
           <div align="center"><br>
               <a href="" onclick="addToList(document.getElementById('FLoutput'),document.getElementById('FLinput').options[document.getElementById('FLinput').selectedIndex].value,'x');return false;" >[img]"frm-add.gif"[/img] </a>
               <br>
               <a href="" onclick="removeFromList(document.getElementById('FLoutput'));return false;" > [img]"frm-remove.gif"[/img] </a>
           </div></td>
         <td width="67%">
          <select name="listField" id="FLoutput" size="5" multiple="mutiple" ondblclick="removeFromList(document.getElementById('FLoutput'))" style= "width: 170px;" >
          <?
        $qryProjL= "SELECT * FROM projectleden WHERE [Project-Id] = ".$Project_id;
                                            
        if( $resProjL = odbc_exec($conn, $qryProjL) )
        {
          while ($obj = odbc_fetch_array($resProjL))
          { 
        //  echo '<pre>'.print_r($obj, 1).'</pre>';
          $Afkorting = $obj['Afkorting'] ;
        //  echo "$Afkorting ";
            if ($obj['Afkorting'] == "") 
                {
                $Projectleden = $obj['Volledigenaam'];
                }
            else
                {
                    $db1 = "C:\Inetpub\wwwroot\Projectdb\MainDB.mdb";
                    $conn1 = odbc_connect('DRIVER={Microsoft Access Driver (*.mdb)}; DBQ='.$db1, '', '');
                    $qryProjL1= "SELECT * FROM medewerker WHERE afkorting = '".$Afkorting."'";
                    $resProjL1 = odbc_exec($conn1, $qryProjL1);
                    while($obj1 = odbc_fetch_array($resProjL1))
                     {
                        $Projectleden = "$obj1[roepnaam] $obj1[tussenvoegsels] $obj1[naam]";
                     }
                }
             echo "<option value='".$Projectleden."'>".$Projectleden."</option>";
           }
        } 
        ?>
          </select>        
          <input type="hidden" name="medewerkers" id="medewerkers" value="" />  

Proud member of the Cosmic Cows


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Kijk en dan is het probleem zo opgelost :)

JavaScript:
1
addToList(document.getElementById('FLoutput'),document.getElementById('FLinput').options[document.getElementById('FLinput').selectedIndex].value,'x');


Doordat je bij de bovenstaande functieaanroep als laatste parameter een X opgeeft krijgen nieuw toegevoegde opties een value X...

Je kunt de X beter vervangen door

JavaScript:
1
document.getElementById('FLinput').options[document.getElementById('FLinput').selectedIndex].value


(en misschien is het zinvol om in de tweede parameter van je functie niet de value van de optie, maar de text van de optie mee te sturen ;))

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Hij werkt eindelijk!!! Bedankt heeeeeee _/-\o_
Whoohoooo ;)
faabman schreef op dinsdag 01 november 2005 @ 14:05:
(en misschien is het zinvol om in de tweede parameter van je functie niet de value van de optie, maar de text van de optie mee te sturen ;))
Value en text zijn precies hetzelfde, dus dan maakt het niks uit lijkt mij :)

Proud member of the Cosmic Cows

Pagina: 1