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

    problema con getElementsByName in ie

    ciao a tutti...
    in uno script ho queste righe:
    codice:
    document.getElementsByName('tab')[0].className = "tab";
    document.getElementsByName('tab')[1].className = "tab";
    document.getElementsByName('tab')[2].className = "tab";
    document.getElementsByName('tab')[3].className = "tab";
    mi servono per cambiare lo stile degli elementi "tab" (ne ho più di uno). il fatto è che con firefox tutto ok, funziona, mentre con explorer mi da errore dicendo che document.getElementsByName('tab')[0].className = "tab"; è undefined.....

    qualcuno sa il perchè? non ho un form nella pagina, ma penso che dovrebbe funzionare lo stesso...o no?

    grazie mille

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ma non esiste quel metodo nel DOM
    forse volevi usare getElementsByTagName

  3. #3
    mi sa che ti sbagli:


    http://www.w3schools.com/htmldom/met...entsbyname.asp


    io voglio cambiare lo stile di un elemento riconosciuto tramite il suo nome, non tramite il tag...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il getElementsByName() esiste, ma lo si usa poco, dato che il name dei tag e` un attributo deprecato (salvo in elementi interni ad un <form>).
    E comunque il suo uso dipende fortemente dalla DTD usata e dal browser.

    Quindi devi darci piu` informazioni sul contesto:
    Quale DOCTYPE assegnato alla pagina.
    In quale/i browser funziona e non funziona (compreso versione, dato che IE ha comportamenti diversi in versioni diverse).
    Quale versione di JS usi (in pratica con che attributi del tag <script> invochi il JS).
    A quali oggetti applichi il getElementsByName().

    Tieni presente che non e` una buona idea dare lo stesso nome ad oggetti diversi (ad esempio una classe e una serie di oggetti HTML nella tua pagina).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5

  6. #6
    nel w3schools.com: "Returns a collection of objects with the specified NAME"

    dato che il name dei tag e` un attributo deprecato (salvo in elementi interni ad un <form> )
    lo avevo pensato, ma anche utilizzando un form non mi funziona.

    la doctype è questa:
    DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional

    ma no dovrei aver problemi a cambiarla.
    la versione di javascript no la dichiaro, faccio semplicemente:
    <script type="text/javascript" src=".....js"></script>

    il metodo lo applico a elementi <td>, ma lo potrei mettere a elementi <a> (se il mio grafico mi da una mano!)

    lo script funziona su firefox 1.5.0.4, mentre NON funziona su explorer 6.0.2900..(ecc...è lunghissima)

    ora mi rendo conto che sicuramente la mia scelta non è delle migliori ed è deprecata,per questo vi chiederei: come faccio a cambiare lo stile di un elemento o di una serie di elementi che hanno lo stesso nome? e comunque anche dando nomi diversi agli elementi lo sciript non funziona (almeno mi sembra di aver provato)...magari utilizzo il get elementById?

    Grazie ragazzi!!

  7. #7
    devguru non lo dichiara
    forse proprio perchè è deprecato ed è meglio non utilizzarlo?

    Grazie!

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    provo
    codice:
    var el = document.getElementsByTagName('input');
    for (var i=0; i<el.length; i++) {
      // potresti provare con el[i].getAttribute('name')
      if (el[i].name == 'tab')
        el[i].className = "tab";
    }

  9. #9
    grazie ragazzi, ho risolto tramite il getElementById

    cmq mi interesserebbe sapere perchè in ie non funzionava, ma penso che ormai sia chiaro che è un metodo deprecato, soprattutto con l'utilizzo di elemento al di fuori di un form

    grazie!

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    In HTML 4 Tansitional il getElementsByName() dovrebbe funzionare, ma non nei browser piu` vecchi (tipo IE5.5) dato che non supportano JS 1.5.
    In IE6 dovrebbe funzionare.

    Ma a mio parere converrebbe usare altri strumenti.

    Perche` dare un name ad un elemento in cui e` deprecato?
    Il punto e` proprio trovare altri metodi. Per questo pero` occorre consocere tutto il progetto, altrimenti si rischia di proporrre un rimedio peggiore del male.

    Ad esempio, se i <td> sono tutti, si puo` usare
    var tuttiTD = getElementsByTagName('td');
    for(var i=0; i<tuttiTD.length; i++) {
    tuttiTD[i].className = 'nuovaclasse';
    }

    Se invece si vuole cambiare la classe solo ai TD che hanno gia` una determinata classe, basta inserire un if supplementare nel loop:
    if(tuttiTD.className=='vecchiaclasse') tuttiTD[i].className = 'nuovaclasse';
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.