Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [JS] Agire sull'attributo href

    Salve, avrei un problema: vorrei creare una funzione ma non riesco ad ottenere quello che voglio. L'html è questo:

    <div class="contenitore1">
    Test1
    Test2
    Test3
    </div>

    La funzione che mi piacerebbe avere dovrebbe agire in questo modo:
    - Ogni volta che si clicca su un elemento contenuto in '.contenitore1' che sia anche un ancora, preleva l'attributo href di quest'ultimo e racchiudilo in una variabile.
    - Dopo aver fatto ciò la pagina non dovrebbe cambiare nonostante si abbia cliccato su un ancora, come se href non avesse nessun indirizzo all'interno.
    - Quando è finita la funzione ripristina l'attributo href come era all'inizio.

    Grazie

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Operazione abbastanza complessa, analizzando gli step sono:
    A) Verifico il click pertanto dovrò salvare i dati con ajax in un database o xml
    B) Salvo il click eseguito e interrompo il href
    C) Ripristino il href cliccato in modo che sia funzionante e attivo ed al secondo click vada alla pagina indicata
    Se hai conoscenze per fare in parte quanto detto inizia con lo sviluppare il codice cosi d'agevolare lo sviluppo, in difetto la vedo "dura" (non impossibile) che qualcuno ti scriva tutto il codice
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Grazie innanzi tutto per la risposta
    Purtroppo non ho le conoscenze necessarie per applicare i tuoi consigli ma mi è venuto in mente da poco tempo una tecnica alternativa e mi piacerebbe sapere se è possibile che vada a buon fine.

    onMoseOver:
    - Appena si passa il mouse sull'elemento si cattura href in una variabile
    - Se la variabile esiste o non è null imposta il href a #
    onClick:
    -avvia la funzione utilizzando la variabile prima citata
    -alla fine della funzione imposta href uguale alla variabile e fa un deface di quest'ultima

    L'unico problema è con le persone che navigano da tab, ma con un po' di pazienza si potrebbe risolvere anche quest'ultimo.


    PS: il ciclo si dovrebbe ripetere ad ogni click, non solo al primo

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Certo sapendo come procedere credo sia possibile, aggiungendo che deve funzionare anche su tablet è smartphone (questo complica molto lo sviluppo) le possibilità che ti scrivano il codice sono quasi nulle, spero di sbagliarmi
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Grazie, vedo se riesco a fare qualcosa da solo.
    Per i tablet vedrò di di fare qualcosa di alternativo.

  6. #6

    Re: [JS] Agire sull'attributo href

    Originariamente inviato da 6*era
    Salve, avrei un problema: vorrei creare una funzione ma non riesco ad ottenere quello che voglio. L'html è questo:

    <div class="contenitore1">
    Test1
    Test2
    Test3
    </div>

    La funzione che mi piacerebbe avere dovrebbe agire in questo modo:
    - Ogni volta che si clicca su un elemento contenuto in '.contenitore1' che sia anche un ancora, preleva l'attributo href di quest'ultimo e racchiudilo in una variabile.
    - Dopo aver fatto ciò la pagina non dovrebbe cambiare nonostante si abbia cliccato su un ancora, come se href non avesse nessun indirizzo all'interno.
    - Quando è finita la funzione ripristina l'attributo href come era all'inizio.

    Grazie

    codice:
    <div class="contenitore1">
    Test1
    Test2
    Test3
    </div>
    <script type="text/javascript">
    //arrA conterrà tutti i tag "a" dentro il div#contenitore1
    var arrA=document.getElementById('contenitore1').getElementsByTagName('a');
    //scorro l'array
    for(var i=0; i<arrA.length; i++){
       //assegno (non in-line) la funzione click ai link (step1()?)
       arrA[i].onclick=function(){
          //la variabile linkHref conterrà, sorpresa sorpresa, l'href del link
          var linkHref=this.href;
          //alerto l'href
          alert(linkHref);
          //blocco l'evento click, il link non reindirizzerà verso l'href indicato
          return false;
       }
    }
    </script>
    edit:
    Ho commentato il codice, spero sia chiaro.
    Nota che lo script si trova in fondo al codice, se lo metti nell'head devi racchiuderlo in un:
    codice:
    window.onload=function(){
       ...
    }

  7. #7
    Grazie infinite! Mi hai risolto un problema!

  8. #8
    -edit: scusami per il disturbo, riusciresti anche a spiegarmi come rendere disponibile la variabile linkHref anche al di fuori della funzione da te postata? Scusami ma sono un novellino

  9. #9
    Originariamente inviato da 6*era
    -edit: scusami per il disturbo, riusciresti anche a spiegarmi come rendere disponibile la variabile linkHref anche al di fuori della funzione da te postata? Scusami ma sono un novellino
    Potresti usare una variabile globale.
    codice:
    <script type="text/javascript">
    
    var linkHref; //globale
    
    var arrA=document.getElementById('contenitore1').getElementsByTagName('a');
    for(var i=0; i<arrA.length; i++){
          arrA[i].onclick=function(){
          linkHref=this.href;//nota che manca il 'var' iniziale
          alert(linkHref);
          return false;
       }
    }
    </script>

  10. #10
    Perfetto, grazie mille!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.