Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    onclick rendere alcuni elementi della pagina invisibili

    Ciao ragazzi sto costruendo a mano delle select dinamiche per cui

    Codice PHP:
    <script type="text/javascript" language="javascript">
        function changeprovince<?php echo $row_regioni['codice']; ?>() {
            document.getElementById("province<?php echo $row_regioni['codice']; ?>").style.display="block";
        }
    </script>
    Con questo script regolarmente al click su una regione viene visualizzata la select successiva che visualizza le province ma la vecchia select resta.
    Come posso fare per far scomparire le vecchie select ad ogni click?

    Avevo provato dando una classe a tutte le select provincia e scrivendo:
    Codice PHP:
    <script type="text/javascript" language="javascript">
        function changeprovince<?php echo $row_regioni['codice']; ?>() {
    [B]document.getElementByClass("provincia").style.display="none";[/B] 
            document.getElementById("province<?php echo $row_regioni['codice']; ?>").style.display="block";
        }
    </script>
    ma firebug mi dice che document.getElementByClass("provincia") non è valido.

    Qualche consiglio?

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    non esiste document.getElementByClass

    dovresti fare in modo di assegnare a ciascuna select un id univoco per poi nasconderle con
    document.getElementById('idunivoco').style...
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Originariamente inviato da fcaldera
    non esiste document.getElementByClass

    dovresti fare in modo di assegnare a ciascuna select un id univoco per poi nasconderle con
    document.getElementById('idunivoco').style...
    document.getElementByClass l'ho letto in diverse guide....

    la pagina contiente già molte query e query iterate in altre query, non ci sarebbe un modo di nascondere tutte le select con una sola riga di javascript senza iterare in un ciclo anche questo comando?

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il metodo a cui ti riferisci probabilmente è document.getElementsByClassName che però non è supportato da molti browser (tra i quali Internet Explorer)

    se proprio non puoi aggiungere un attributo id allora devi scriverti una funzione che prenda gli elementi per classe che funzioni su ogni browser:

    ad esempio questa o quest'altra scritta da nyman
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Mhm in effetti come dice l'articolo questa è una grande lacuna del dom

    cmq scusa la mia grande inesperienza in javascript, ora ho questa funzione ma come la uso?


    Codice PHP:
    function getElementsByClass(node,searchClass,tag) {
      var 
    classElements = new Array();
      var 
    els node.getElementsByTagName(tag);
      var 
    elsLen els.length;
      var 
    pattern = new RegExp("\b"+searchClass+"\b");
      for (
    00elsLeni++) {
        if ( 
    pattern.test(els[i].className) ) {
          
    classElements[j] = els[i];
          
    j++;
        }
      }
    return 
    classElements;


  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    getElementsByClass(node,searchClass,tag)

    ovvero nel tuo caso (ipotizzando che tu cerchi in tutto il body)

    getElementsByClass(document.body, 'provincia', 'select')


    Questo ti restituirà ovviamente un array (anche se c'è un solo elemento con quella classe)
    Devi controllare che l'array non sia vuoto, ciclarlo e per ciascun elemento settare il suo style.


    comunque c'è una spiegazione nell'ultima pagina che ti ho linkato

    How to call it and parameters
    Parameters

    * className
    One or several class names, separated by space. Multiple class names demands that each match have all of the classes specified. Mandatory.

    * tag
    Specifies the tag name of the elements to match. Optional.

    *elm
    Reference to a DOM element to look amongst its children for matches. Recommended for better performance in larger documents. Optional.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Quindi in un caso generale sarebbe

    getElementsByClass(document.body, 'NOME DELLA CLASSE', 'TIPO DI ELEMENTO')

    giusto?

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    sì quello sarebbe il principio generale
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  9. #9
    DA niubbio in javascript ho provato così

    Codice PHP:
    <script type="text/javascript" language="javascript">
        function changeprovince<?php echo $row_regioni['codice']; ?>() {
            if(getElementsByClass(document.body, 'provincia', 'select')!="")
            {            
                while(getElementsByClass(document.body, 'provincia', 'select'))
                {
                    document.getElementsByClass(document.body, 'provincia', 'select').style.display="none";
                }
            }
            document.getElementById("province<?php echo $row_regioni['codice']; ?>").style.display="block";
        }
    </script>
    ma non ho risultati (neanche errori e questo già è positivo lol)
    In pratica fa come prima: al cambio della regione fa apparire la nuova select ma questa si va ad aggiungere alle altre scelte precedentemente (che non vengono settate a display:none

    Dove sbaglio?

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    sbagli il modo di riferirti alle singole select mentre cicli l'array.

    codice:
    <script type="text/javascript">
        function changeprovince<?php echo $row_regioni['codice']; ?>() {
            
            var ps = [];
            ps = getElementsByClass(document.body, 'provincia', 'select'); /* restituisce un array */
            var numselect = ps.length;
    
            if (numselect === 0) return; // nessuna select
            while (numselect--) { ps[numselect].style.display = "none"; };
    
            document.getElementById("province<?php echo $row_regioni['codice']; 
            ?>").style.display = "block";
        }
    </script>

    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

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.