Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di giacomino_jack
    Registrato dal
    Feb 2002
    residenza
    Italy
    Messaggi
    202

    eliminare un elemento da un array

    Ho questo form:
    Codice PHP:
    <html>
      <
    head>
      <
    title>Prova di selettore multiplo</title>
      <
    script type="text/javascript"><!--//
        
    var arSelezionati = new Array();

        function 
    addElemento(objsel) {
            
    arSelezionati.push(objsel.options[objsel.selectedIndex].text);
            
    visValoriSelezionati();
        }
        
        function 
    delElemnto() {
            
        }
        
        function 
    visValoriSelezionati(){
            
    testoSelezionati arSelezionati.toString();
            
    document.frm_scelta.ValoriSelezionati.value testoSelezionati.replace(/,/g"\n");
        }
        
    //--></script>
      
    </head>
      <
    body>
        <
    form name="frm_scelta" action="">
            <
    table cellpadding="5">
                <
    tr valign="top">
                    <
    td><select id="ElencoElementi" name="ElencoElementi" size="1" style="width:300px;">
                        <
    option value="El_1">Elemento 1</option>
                        <
    option value="El_2">Elemento 2</option>
                        <
    option value="El_3">Elemento 3</option>
                        <
    option value="El_4">Elemento 4</option>
                        <
    option value="El_5">Elemento 5</option>
                        <
    option value="El_6">Elemento 6</option>
                        <
    option value="El_7">Elemento 7</option>
                        <
    option value="El_8">Elemento 8</option>
                        <
    option value="El_9">Elemento 9</option>
                        <
    option value="El_10">Elemento 10</option>
                        <
    option value="El_11">Elemento 11</option>
                        <
    option value="El_12">Elemento 12</option>
                        <
    option value="El_13">Elemento 13</option>
                        <
    option value="El_14">Elemento 14</option>
                        <
    option value="El_15">Elemento 15</option>
                        <
    option value="El_16">Elemento 16</option>
                    </
    select></td>
                    <
    td><input type="button" value="+" onclick="addElemento(document.frm_scelta.ElencoElementi);"></td>
                </
    tr>
                <
    tr valign="top">
                    <
    td><textarea id="ValoriSelezionati" style="width:300px; height:100px;"></textarea></td>
                    <
    td><input type="button" value="-" onclick="delElemento(document.frm_scelta.ElencoElementi);"></td>
                </
    tr>
            </
    table>
        </
    form>
      </
    body>
    </
    html
    Dopo aver selezionato un elemento dalla combo, premendo il tasto + l'elemento si aggiunge nella textarea come elemento selezionato.
    Il problema mi si presenta nel momento in cui con il tasto meno voglio eliminare un elemento (se presente...) da quelli selezionati. In poche parole, qual'è il metodo contrario a push()?

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    splice
    non e' il contrario di push (che sarebbe pop, che rimuove l' ultimo elemento dall' array)
    ma credo sia piu' indicato per quello che stai cercando di fare
    ciao

  3. #3
    Utente di HTML.it L'avatar di giacomino_jack
    Registrato dal
    Feb 2002
    residenza
    Italy
    Messaggi
    202
    OK! Grazie...

    Queste le funzioni modificate:
    Codice PHP:
    <script type="text/javascript"><!--//
        
    var arVSelezionati = new Array();
        var 
    arTSelezionati = new Array();

        function 
    addElemento(objsel) {
            
    esiste false;
            
    // Verifica se l'elemento esiste gia' tra i selezionati
            
    for (iEl=0;iEl<arVSelezionati.length;iEl++) {
                if (
    arVSelezionati[iEl] == objsel.options[objsel.selectedIndex].value esiste true;
            }
            if (!
    esiste) {
                
    arVSelezionati.push(objsel.options[objsel.selectedIndex].value);
                
    arTSelezionati.push(objsel.options[objsel.selectedIndex].text);
                
    visValoriSelezionati();
            }
        }
        
        function 
    delElemento(objsel) {
            for (
    iEl=0;iEl<arVSelezionati.length;iEl++) {
                if (
    arVSelezionati[iEl] == objsel.options[objsel.selectedIndex].value ) {
                    
    arVSelezionati.splice(iEl1);
                    
    arTSelezionati.splice(iEl1);
                    break;
                }
            }
            
    visValoriSelezionati();
        }
        
        function 
    visValoriSelezionati(){
            
    testoSelezionati arTSelezionati.toString();
            
    document.frm_scelta.ValoriSelezionati.value testoSelezionati.replace(/,/g"\n");
        }
    //--></script> 
    Ma ora come faccio a prelevare i valori delle chiavi (arVSelezionati[]) per utilizzarli in php?

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da giacomino_jack
    Ma ora come faccio a prelevare i valori delle chiavi (arVSelezionati[]) per utilizzarli in php?
    ma ...se non avessi gia' stampato in un campo del form un riferimento alle option selezionate ti direi di stamparlo, magari in un campo nascosto
    e' questo l' unico modo di passarlo al lato server

    da php puoi fare l' explode di questa stringa che ti arriva
    e' comunque argomento da approfondire in php

    qui
    codice:
            testoSelezionati = arSelezionati.toString();
            document.frm_scelta.ValoriSelezionati.value = testoSelezionati.replace(/,/g, "\n");
    il replace puoi evitarlo,
    esiste gia' un metodo join per gli array che permette di specificare il separatore
    document.frm_scelta.ValoriSelezionati.value = arSelezionati.join('\n')

    ciao

  5. #5
    Utente di HTML.it L'avatar di giacomino_jack
    Registrato dal
    Feb 2002
    residenza
    Italy
    Messaggi
    202
    Ragionando ci ero già arrivato e lo stavo testando mentre mi rispondevi...
    Comunque grazie... il metodo join è una figata

    Ora però ho un ulteriore problema.
    Quando carico la pagina, dovrei poter visualizzare una precedente situazione. Per quanto riguarda il contenuto dei campi lo riesco a pre-caricare ma a quel punto gli array di js sono vuoti. come li posso valorizzare al caricamento della pagina?

    P.S.: Che si è capito che di js so poco più di niente?... però smanetto

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    il minimo indispensabile,
    richiami una funzione onload (o comunque quando sei certo tutti gli elementi siano stati definiti nel markup) che
    - splitta il valore del campo
    - cicla per l' array risultante
    - fa push del valore nel tuo array

  7. #7
    Utente di HTML.it L'avatar di giacomino_jack
    Registrato dal
    Feb 2002
    residenza
    Italy
    Messaggi
    202
    richiami una funzione onload ...
    Purtroppo non posso utilizzare la funzione onload dato che il tutto è contenuto in file .php incluso in un altro dinamicamente e che ha già visualizzato il tag body.

    ...(o comunque quando sei certo tutti gli elementi siano stati definiti nel markup)
    Che cosa vuoi dire? Che c'e' la possibilità di agire in modo diverso?

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    questo non vuol dir nulla, i gestori evento si settano anche via javascript
    window.onload=funzione;
    window.onload=function(){funzione('argomento');}

    ci sono varie discussioni al riguardo, su come implicitamente si sovrascrivono, su come si evita che si sovrascrivano etc etc

    quando dico di essere certi che tutti gli elementi siano stati definiti nel markup, intendo x es.
    codice:
    <div id="elemento">...</div>
    <script type="text/javascript">
    // istruzioni che riguardano "elemento"
    </script>

  9. #9
    Utente di HTML.it L'avatar di giacomino_jack
    Registrato dal
    Feb 2002
    residenza
    Italy
    Messaggi
    202
    Perfetto....

    Grazie e alla prossima

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.