Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    33

    Cercare tag e ricavare name

    Ciao a tutti, ho un problema un po' complesso che non riesco a risolvere, vorrei realizzare un piccolo motore di ricerca per i segnalibri nella mia pagina, ma non so bene da che parte iniziare.

    Praticamente dovrei avere una funzione che ricerca nel testo tutti i tag così composti:
    <a name="testo"> e che mi restituisce un array con tutti i name. è una cosa possibile?

  2. #2
    codice:
    function searchBookmarks(){
       var returnArray=new Array();
       var arrLink=document.getElementsByTagName('a'); //array di tutti i link del documento
       for(var i=0; i<arrLink.length; i++){
           if(arrLink[i].name=='testo'){
               returnArray.push(arrLink[i].innerHTML);
           }
       }
       return returnArray;
    }
    Non è chiaro cosa intendi con: "...mi restituisce un array con tutti i name."
    La funzione che ti ho postato restituisce un array con il contenuto degli "a" con name=testo.
    esempio:
    <a name="testo">Pippo</a>
    <a name="testo">Pluto</a>
    restituisce
    ['Pippo','Pluto']

    Oppure i name variano e vuoi proprio un array con i name?
    P.S.: Con jQuery si farebbe prima...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    33
    Praticamente dato un testo generico:
    "<a name='segnalibro1'>testo</a> a caso, con numerosi <a name='segnalibro2'>segnalibri</a> e link"

    Mi servirebbe un array contenente segnalibro1, segnalibro2...

    Se ho capito il tuo esempio, dovrei scriverlo così:

    codice:
    function searchBookmarks()
    {
      var returnArray=new Array();
      var arrLink=document.getElementsByTagName('a');
       for(var i=0; i<arrLink.length; i++)
        {
          returnArray.push(arrLink[i].name);
        }
       
    return returnArray;
    }
    è corretto?
    Sempre se ho capito correttamente, il tuo esempio cerca in tutta la pagina. Se volessi restringere il campo ad un div.

    codice:
    var arrLink=getElementsById('mydiv').getElementsByTagName('a');
    Si può fare?

    Grazie mille

  4. #4
    Originariamente inviato da mydemo
    Praticamente dato un testo generico:
    "<a name='segnalibro1'>testo</a> a caso, con numerosi <a name='segnalibro2'>segnalibri</a> e link"

    Mi servirebbe un array contenente segnalibro1, segnalibro2...

    Se ho capito il tuo esempio, dovrei scriverlo così:

    codice:
    function searchBookmarks()
    {
      var returnArray=new Array();
      var arrLink=document.getElementsByTagName('a');
       for(var i=0; i<arrLink.length; i++)
        {
          returnArray.push(arrLink[i].name);
        }
       
    return returnArray;
    }
    è corretto?
    Sempre se ho capito correttamente, il tuo esempio cerca in tutta la pagina. Se volessi restringere il campo ad un div.

    codice:
    var arrLink=getElementsById('mydiv').getElementsByTagName('a');
    Si può fare?

    Grazie mille
    In questa maniera nel returnArray finirebbero anche valori nulli, gli "a" che non hanno un name.
    Potresti settare un name solo per gli "a" relativi ai bookmark e poi, per restringere la ricerca:
    codice:
    function searchBookmarks(){
       var returnArray=new Array();
       var arrLink=document.getElementById('idDelTuoDiv').getElementsByTagName('a'); //array di tutti i link dentro il div
       for(var i=0; i<arrLink.length; i++){
           if(arrLink[i].name!=''){//se c'è un name (esclude eventuali altri collegamenti)
               returnArray.push(arrLink[i].name);
           }
       }
       return returnArray;
    }
    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    33
    Grazie mille!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    33
    Scusa la domanda, ma poi come faccio a de-compattare l'array in un div?

  7. #7
    Una soluzione potrebbe essere:
    codice:
       var theDiv=document.getElementById('myDiv');
       for(var i=0; i<returnArray.length; i++){
           theDiv.innerHTML=theDiv.innerHTML+returnArray[i]+'
    '
       }
    Oppure si potrebbe creare un textNode per ogni elemento dell'array da aggiungere al div con appendChild, oppure ancora usare il metodo join() sull'array.

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.