Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    come prendere i valori option di una select? per ora riesco solo il valore cliccato!

    ciao , un quesito , piano piano sto capendo come funziona javascript... peccato che mi manca il linguaggio e perdo un sacco di tempo a trovare la stringa giusta.

    cmq

    ho una domanda che non riesco a soddisfare ...
    Codice PHP:
        var valore;
        var 
    elemento document.getElementById('nascondiLaTabella');//recupero la         collezione del select nascondicolonna
        
    elemento elemento.length;//conto quanti valori ho trovato nella collezione
        
    alert ("numero in collezione " elemento);
        for (var 
    elemento i++){
            
    alert ("numero ciclo " +i);
            
    valore nascondiLaTabella.options[nascondiLaTabella.selectedIndex].value;//recupero il valore della variabile nella select!
            
    alert ("campo " +valore);
            } 
    con questa stringa
    valore = nascondiLaTabella.options[nascondiLaTabella.selectedIndex].value
    recupero il valore dell'option che ho selezionato , e se io volessi l'elenco delle option presenti nella select come faccio?

    una volta che una ad una i valori delle option entrano nella variabile le farei sparire dalla tabelle , ovviamente alcune dovrò escluderle e quindi mi serve la lista completa !

    grazie, ciao

  2. #2
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ciao ...
    ho trovato la soluzione per prelevare tutti i valori ...
    ma ora non riesco a cancellare tutte n colonne ce desidero dalla tabella , e non essondo una cima in js...

    vi posto il copdice

    Questo e come richiamo da php
    Codice PHP:
    Nascondi campi <select size=\"1\" id=\"nascondiLaTabella\" name=\"visualizza_nascondi\" onChange=\"NascondiColonna('dataricerca',(this[this.selectedIndex].value));\"> 
    uesto è lo script js che non va come dovrebbe
    Codice PHP:
        function NascondiColonna(IDtabella,voce){
    ModificaColonna(IDtabella,voce,"none");
    }

    function 
    MostraColonna(IDtabella,voce){
    ModificaColonna(IDtabella,voce,"");
    }
    function 
    ModificaColonna(IDtabella,voce,display){
    ths=document.getElementById(IDtabella).tHead.rows[0].cells;//conta il numero di colonne presenti nella tabella
    if (voce != "Nascondi tutto"){
    for(
    i=0;i<ths.length;i++){
        
    htext=ths[i].firstChild.nodeValue;
        if(
    htext==voce)
            
    colonna=i;
        }
    if(
    colonna>=ths.length) return;
    ths[colonna].style.display=display;
    trs=document.getElementById(IDtabella).tBodies[0].rows;
    for(
    i=0;i<trs.length;i++){
        
    tds=trs[i].cells;
        
    tds[colonna].style.display=display;
        }
    }else{
    //-------------------------------------------------------------------------------------------------
            
    var nomecolonna;
            var 
    elemento document.getElementById('nascondiLaTabella');//recupero la collezione del select nascondicolonna
        
    var contocolonne elemento.length;//conto quanti valori ho trovato nella collezione
        //alert ("numero in collezione " + elemento);//recupera gli n elementi presenti nella select
        
    for (var contocolonne i++){
                
    nomecolonna nascondiLaTabella.options[i].value//prendo gli n valori dalla select
                
    alert ("NOME COLONNA " +nomecolonna);
                if(
    nomecolonna != "Nascondi tutto"){
                var 
    colonna=i;
              
    alert ("nome colonna " +nomecolonna" numero colonna " i+3);
                if(
    colonna>=contocolonne) return;
                    [
    COLOR=violet]contocolonne[colonna[i]].style.display=display;[/COLOR]
                    
    alert ("non so bene che cosa faccia " contocolonne);
                            var 
    contorighe=document.getElementById(IDtabella).tBodies[0].rows;
                            
    alert ("conteggio righe  : " +contorighe.length);
                        for(
    l=0;l<contorighe.length;l++){
                            
    alert ("valore di L  :" +l);
                        var 
    variabili=contorighe[l].cells;
                        
    variabili[colonna[i]].style.display=display;
                    }
            }else {
                continue;
                }
        }
        
        }
    }
    function 
    Ripristina(IDtabella){
    var 
    trs=document.getElementById(IDtabella).tHead.rows;
    ths=trs[0].cells;
    for(
    i=0;i<ths.length;i++) ths[i].style.display="";
    trs=document.getElementById(IDtabella).tBodies[0].rows;
    for(
    i=0;i<trs.length;i++){
        
    tds=trs[i].cells;
        for(
    j=0;j<tds.length;+j++)
            
    tds[j].style.display="";
        }

    fino alle lineette va tutto bene , il problema nasce quando devo far ciclare il tutto e non riesco a trovare una soluzione.

    in viola la linea che mi da l'errore ...

    per essere chiari lo script prende n valoori da una select , conta le option e poi le cicla prelevando il loro valore , ad ogni valore preso nasconde la colonna, poi se l'utente clicc l'altro bottone le fa comparire .

    con la mono colonna non ci sono problemi , ma quando diventano più di una non riesco a gestirle !

    qualcuno sa come darmi una mano?

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    niente , anche con i suggerimenti dati nella guida qui sopra non riesco a farlo funzionare ... qualche guida da consigliarmi per il mio caso ?

    mi sorge un dubbio (grazie alla guida)

    1-è possibile che avendo inserito nella select onchange = this[this.selectedIndex].value;
    mi crei problemi a riportare gli n valori?

    2- senza un form ma con un id sulla select è lo stesso. l'importante è cambiare metodo di 'raccolta'?

    grazie dei consigli e aiuti

  4. #4
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    up

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Scusa, ma con quel codice rimaneggiato non capisco cosa vuoi ottenere... devi cancellare qualche option di una select?

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    no , il mio obbiettivo è di eliminare n colonne della tabella stampata ....

    ovviamente questo script toglie una colonna alla volta ma se un utente clicca su nascondi tutto devo fare in modo che tutte le colonne nell'elenco vengono nascoste . questo script funziona bene per i singoli elementi dell'option, mentre non riesco a far nascondere le n colonne in un colpo solo

  7. #7
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ciao ...
    sto cominciando a capire come funziona js ma la strada è ancora lunga...

    vi riposto il codice per vedere se riuscite a chiarirmi qualcosa di più ...
    ragionando sul pezzo ho quasi trovato la soluazione :

    Codice PHP:
    if (voce != "Nascondi tutto"){
    for(
    i=0;i<ths.length;i++){
        
    htext=ths[i].firstChild.nodeValue;
        if(
    htext==voce)
            
    colonna=i;
        }
      
    alert (colonna);
    if(
    colonna >= ths.length) return;
    ths[colonna].style.display=display;
    trs=document.getElementById(IDtabella).tBodies[0].rows;
    for(
    i=0trs.length;i++){
        
    tds=trs[i].cells;
        
    tds[colonna].style.display=display;
        }
    }else if (
    voce == "Nascondi tutto"){
       for ( 
    <= 15 i++ ){//ciclo per il numero delle colonne
           
    alert ("colonna da cancellare" +i);
           
    colonna ths[i].firstChild.nodeValue//nome della colonna
           
    alert ("numero di colonne presenti : " ths.length " nome colonna " +colonna);
           
    righe =document.getElementById(IDtabella).tBodies[0].rows;//conto le righe per ogni colonna
           
    alert (righe.length);
           if (
    >= 15){alert ("ritorno "); return;}//finisco tutto se le colonne finiscono
           
    for ( righe.length l++){//
               
    alert ("entro ciclo l n " +l);
               var 
    nasc righe[l].cells;
               
    nasc[i].style.display=display
               }
               
           }
        }
        } 
    ho solo un forte dubbio su questo frammento

    for ( l = 0 ; l < righe.length ; l++){//
    alert ("entro ciclo l n " +l);
    var nasc = righe[l].cells;
    nasc[i].style.display=display;

    io gli chiedo di ciclare tutte le righe della tabella
    dopo di che gli dico nasc[i]. di snascondere tutte le righe una ad una della colonna [i] che sarebbe quella interessata, una volta finito di nascondere quella colonna loscript passa alla prossima.

    il problema e che nn nasconde le colonne ma bensì le righe facendo scalare i valori da una colonna all'altra...

    ma indicandogli di nascondere la colonna[i] ossia la colonna4 (per esempio) non dovrebbe togliermi tutte le righe insieme all'intestazione ?

    spero di essermi spiegato bene ... e chiedo scusa per la distrazione di ieri !!

    ciao e grazie!

  8. #8
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    Grazie, risolto , mi sono dimanticato di mettere il style.display=dispay anche alle colonne

    posto il codice finito e funzionante anche se poco ottimizzato

    lo gestisco tramite select con una serie di option i cui valori li recupera tramite l'attributo value="";

    il richiamo viene effettuato tramite onchange all'interno della select

    Codice PHP:

    function Nascondi(IDtabella,voce,display){
    ths=document.getElementById(IDtabella).tHead.rows[0].cells;//conta il numero di colonne presenti nella tabella
    if ((voce != "Nascondi tutto")){//se la voce recuperata è uguale a quella segnata
    for(i=0;i<ths.length;i++){//ciclo per quante sono le colonne
        
    htext=ths[i].firstChild.nodeValue;//prelevo il nome di ogni colonna
        
    if(htext==voce)//verifico se il nome è uguale alla voce selezionata
            
    colonna=i;//carico la posizione della colonna (da 0 a n)
        
    }
      if(
    colonna >= ths.length) return;//se la posizione supera la lunghezza delle colonne esco 
            
    ths[colonna].style.display=display;//nascondo la colonna (intestazione)
            
    trs=document.getElementById(IDtabella).tBodies[0].rows;//conto le righe della colonna
            
    for(i=0trs.length;i++){//ciclo per quante sono le righe
            
    tds=trs[i].cells;//prelevo la righa della colonna desiderata
            
    tds[colonna].style.display=display;//imposto lo style none
          
    }
          
    //Questo serve per togliere tutte le colonne a piacere tramite un tasto solo del select
    }else if ((voce == "Nascondi tutto")){
       for ( 
    <= 15 i++ ){//ciclo per il numero delle colonne
          
    ths[i].style.display=display;
           
    colonna ths[i].firstChild.nodeValue//nome della colonna
           
    righe =document.getElementById(IDtabella).tBodies[0].rows;//conto le righe per ogni colonna
           
    if (>= 15){alert ("ritorno "); return;}//finisco tutto se le colonne finiscono
               
    for ( righe.length l++){//
                   
    nasc righe[l].cells;
                   
    nasc[i].style.display=display
             }
           }
        }
    }
                    
    function 
    Ripristina(IDtabella,voce,display){
        
    ths=document.getElementById(IDtabella).tHead.rows[0].cells;//conta il numero di colonne presenti nella tabella
        
    if ((voce != "Visualizza tutto")){
            for(
    i=0;i<ths.length;i++){
            
    htext=ths[i].firstChild.nodeValue;
            if(
    htext==voce)
                
    colonna=i;
        }
      if(
    colonna >= ths.length) return;
            
    ths[colonna].style.display=display;
            
    trs=document.getElementById(IDtabella).tBodies[0].rows;
            for(
    i=0trs.length;i++){
            
    tds=trs[i].cells;
            
    tds[colonna].style.display=display;
          }
    }else if ((
    voce == "Visualizza tutto")){
       for ( 
    <= 15 i++ ){//ciclo per il numero delle colonne
          
    ths[i].style.display=display;
           
    colonna ths[i].firstChild.nodeValue//nome della colonna
           
    righe =document.getElementById(IDtabella).tBodies[0].rows;//conto le righe per ogni colonna
           
    if (>= 15){alert ("ritorno "); return;}//finisco tutto se le colonne finiscono
               
    for ( righe.length l++){//
                   
    nasc righe[l].cells;
                   
    nasc[i].style.display=display
             }
           }
        }

    lo script lo preso e modificato da questo sito ...
    Grazie mille a tutti!
    ciao

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.