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

    Javascript: valorizzare title dinamicamente

    Salve,
    popolo una select dinamicamente senza alcun problema
    ma non riesco a valorizzare il title su ogni option

    codice:
    sel.options[sel.options.length]= new Option(listino_descrizione,listino_codice);
    sel.options[sel.options.length].title=listino_descrizione;
    la option viene correttamente inserita, ma il title non viene considerato

    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Se ad esempio ci sono già due options, la prima riga crea un'option con indice 2.
    Poi ci sono 3 options, quindi la seconda riga cerca di modificare il title dell'option con indice 3
    No

  3. #3
    Innanzitutto grazie per la risposta e scusami se scrivo solo ora ma sono stato fuori per lavoro.
    Ok, chiaro, aggiungendo una nuova option questa, se é la terza, avrà ovviamente indice 2.
    Il mio scopo é di valorizzare il title sempre dell'ultima option creata
    Quindi é esattamente la option di indice 2, ossia la terza option appena creata, che io voglio impostare con un title
    ma non va
    con il codice
    codice:
    sel.options[sel.options.length]=newOption(listino_descrizione,listino_codice);
    infatti creo la nuova option di indice 2 (sempre ipotizzando di averne altre due di indici, rispettivamente, 0 e 1)
    e quindi con il codice
    codice:
    sel.options[sel.options.length].title=listino_descrizione;
    dovrei andare proprio a valorizzare il title di quest'ultima option
    no?
    ma non va
    puoi postarmi il codice corretto?
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    il title devi assegnarlo alla lunghezza -1
    No

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, puoi risolvere in vari modi.
    Ho l'impressione, però, che tu non abbia capito il problema.

    Cerco di schematizzarlo in questo modo:
    codice:
    // Inizialmente abbiamo sel.options.length = 0
    // Dentro sel non esiste ancora nessuna option
    // ...
    // La riga seguente è quindi sel.options[0] = nuova option;
    sel.options[sel.options.length] = new Option('text','value');
    // A questo punto sel.options.length è = 1
    // Per cui nella riga seguente abbiamo sel.options[1].title = qualcosa;
    sel.options[sel.options.length].title = 'text';
    // ..ma sel.options[1] non esiste, per cui si verifica un errore di questo tipo:
    // TypeError: sel.options[sel.options.length] is undefined
    // che interrompe l'esecuzione dello script.
    Una soluzione, quindi, può essere quella di decrementare di 1 il valore specificato per l'indice delle options nella tua seconda riga, come giustamente ti ha indicato tampertools:
    codice:
    sel.options[sel.options.length] = new Option(listino_descrizione, listino_codice);
    sel.options[sel.options.length-1].title = listino_descrizione;
    Un'altra soluzione può essere quella di usare il metodo add() dell'oggetto select:
    codice:
    var opt = new Option(listino_descrizione, listino_codice);
    opt.title = listino_descrizione;
    sel.add(opt);
    O ancora, puoi attribuire il title al volo, in questo modo:
    codice:
    (sel.options[sel.options.length] = new Option(listino_descrizione, listino_codice)).title = listino_descrizione;
    Sicuramente ci sono anche altre soluzioni, ma l'importante è che tu abbia capito il problema.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Ok, grazie
    Sisi tutto chiaro e ovvio

    una semplice svista

    non ricordavo che la lunghezza mi da il n° di options e non l'ultimo indice

    grazie

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.