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

    [pillola di saggezza] problema innerHTML con select

    il problema: la funzione innerHTML NON riesce a modificare i valori "option" di un campo select.

    browser afflitti dal problema: internet explorer.

    soluzione ufficiale: andare a modificare il DOM del documento e aggiungere tanti nodi quanti option vogliamo aggiungere

    soluzione semplice: inserire il select in un elemento (span o label) e modificare l'innerHTML dell'elemento contenitore

    codice che NON funziona
    codice:
    <select id="select1" >
    <option value="1" >1</option>
    <option value="2" >2</option>
    <option value="3" >3</option>
    <option value="4" >4</option>
    </select>
    
    <script type="text/javascript" >
    document.getElementById('select1').innerHTML='<option value="5" >5<\/option><option value="6" >6<\/option>';
    </script>
    codice che aggira il problema
    codice:
    <label for="select1" id="label_select1" ><select id="select1" >
    <option value="1" >1</option>
    <option value="2" >2</option>
    <option value="3" >3</option>
    <option value="4" >4</option>
    </select></label>
    
    <script type="text/javascript" >
    document.getElementById('label_select1').innerHTML='<select id="select1" ><option value="5" >5<\/option><option value="6" >6<\/option><\/select>';
    </script>
    il "label" è obbligatorio per alcuni livelli di accessibilità del documento, e per le nostre necessità si rivela parecchio utile.

    come soluzione questa che ho postato è semplice da adottare, l'alternativa sarebbe questa
    Totò, vero ma strano
    www.ateicos.com

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se vuoi un parere, per me questo e' uno dei casi che rivelano un utilizzo un po' forzato dell' innerHTML
    la soluzione che consigli qui va bene proprio per un livello minimo di interazione (aggiungo e amen) se serve spingere un po' di piu' si palesa la scomodita' di sovrascrivere l' intero elemento

    per me creare e appendere option con i metodi del DOM resta la soluzione migliore

    senza dimenticare che il javascript classico ha da sempre il suo oggetto Option con cui creare nuove options da appendere alle select
    http://www.devguru.com/technologies/...ript/11258.asp


  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Xinod
    se vuoi un parere, per me questo e' uno dei casi che rivelano un utilizzo un po' forzato dell' innerHTML
    la soluzione che consigli qui va bene proprio per un livello minimo di interazione (aggiungo e amen) se serve spingere un po' di piu' si palesa la scomodita' di sovrascrivere l' intero elemento

    per me creare e appendere option con i metodi del DOM resta la soluzione migliore

    senza dimenticare che il javascript classico ha da sempre il suo oggetto Option con cui creare nuove options da appendere alle select
    http://www.devguru.com/technologies/...ript/11258.asp

    Ciao purtroppo non posso darti ragione. Questo perchè, con IE, creare ed aggiungere option è terribilmente lento rispetto a innerHTML e ho dovuto sperimentarlo a mie spese
    (parlo naturalmente di casi abbastanza anomali, che non si dovrebbero verificare, per esempio l'elenco di tutti i comuni)
    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    naturalmente il solito link al sito americano che dice esattamente quello detto in questo forum in italiano e da tanto tempo
    Pietro

  5. #5
    Originariamente inviato da pietro09
    naturalmente il solito link al sito americano che dice esattamente quello detto in questo forum in italiano e da tanto tempo
    il codice di devguru ha un difetto: se vuoi inserire codice javascript ai vari "select" e "option" devi sbatterti parecchio di più.

    l'uso di innerHTML facilita la vita al programmatore
    Totò, vero ma strano
    www.ateicos.com

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ok, punti di vista diversi

    sulla lentezza citata da Pietro,ero gia' a conoscenza dei risultati di questi test:
    se veramente si ottenessero migliori performance non mi porrei neanche il problema,
    ma quando leggo che e' per limitare lo sbattimento...


  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da ateicos
    il codice di devguru ha un difetto: se vuoi inserire codice javascript ai vari "select" e "option" devi sbatterti parecchio di più.

    l'uso di innerHTML facilita la vita al programmatore
    Sinceramente, non ho letto l'articolo: criticavo solo la mania tutta italiana di riportare pareri di americani, inglesi o australiani sull'invenzione della ruota. Una lettura anche superficiale delle varie discussioni in questo forum, direbbe che questo argomento è stato già affrontato e risolto (cioè, la ruota l'abbiamo già inventata e la stiamo pure utilizzando )

    Comunque, io uso innerHTML soprattutto con ajax che trovo molto comodo.
    Pietro

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Pietro, quello e' un reference, sinceramente a me che sia in inglese o in italiano cambia poco

    se mi lasci il link di un reference javascript in italiano fatto bene come quello la prossima volta lo uso...

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Xinod
    Pietro, quello e' un reference, sinceramente a me che sia in inglese o in italiano cambia poco

    se mi lasci il link di un reference javascript in italiano fatto bene come quello la prossima volta lo uso...
    Ecco, ..., è un secolo che volevo pregarvi di farlo voi moderatori, naturalmente a pagamento

    ps. scherzo: in effetti non avevo letto l'articolo. Me ne scuso.
    Pietro

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.