Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    169

    getElementsByName di un div

    Ciao a tutti!
    avrei la necessità di utilizzare la funzione getElementsByName per individuare dei campi all'interno di un div. non posso partire dal document, in quanto devo limitare l'operazione all'interno del mio div.La funzione però non funziona (almeno con firefox) . ho provato utilizzando il DOM del mio div (analizzando quindi i nodi interni), però dovrei fare delle funzioni ricorsive, e non sono sicuro che funzioni con IE.
    avreste qualche suggerimento da darmi?
    grazie

  2. #2
    Non ti serve una funzione ricursiva, getElementsByName va fino in fondo alla gerarchia...
    O forse devi spiegarti meglio

    Comunque ti basta prendere gli elementi e ciclare, funziona con tutti i browser.
    codice:
    function prendi(tuoDiv) {
      var elems = tuoDiv.getElementsByName("nome");
      for(var i = 0, l = elems.length; i!=l; i++) {
        alert(elems[i]); //Fai quello che vuoi con l'elemento
      }
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    169
    ciao,
    ho provato con questo codice:

    var objDiv = document.getElementById("testDiv");
    try {
    var elems = objDiv.getElementsByName("updField");
    for(var i = 0, l = elems.length; i!=l; i++) {
    alert(elems[i].id+'='+elems[i].value); //Fai quello che vuoi con l'elemento
    }
    } catch (e) {
    }

    però ottengo il seguent errore :

    objDiv.getElementsByName is not a function

    sembra che non sia possibile utilizzare il metodo getElementsByName

  4. #4
    Chiedo umilmente scusa, ho sempre creduto che getElementsByName fosse un metodo di tutti gli elementi, al contrario, così come getElementById, appartiene solo al document...
    Onestamente non ne capisco il perchè, il name mica è univoco :master:

    Poco male, si risolve facilmente ( stavolta ho testato ):
    codice:
    function prendi(tuoDiv) {
      var elems = tuoDiv.getElementsByTagName("*");
      for(var i = 0, l = elems.length; i!=l; i++) {
        if(elems[i].getAttribute("name") === "nomeelemento"){
          alert(elems[i]); //Fai quello che vuoi con l'elemento
        }
      }
    }

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    comunque questo getElementsByName mi risulta avere comportamento ambiguo,
    specie se e' importante mantenere un minimo di retro-compatibilita' non e' il caso di farvi affidamento

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    169
    grazie dell'aiuto!
    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.