PDA

View Full Version : [javascript]problema inserimento dinamico checkbox


Re_Kotc
26-09-2008, 21:22
Ciao a tutti, sto cercando di caricare all'apertura della pagina uno script javascript che inserisca delle checkbox in una determinata posizione..penso di "quasi" esserci, le checkbox vengono caricate ma il testo accanto a ogni checkbox no!....e non capisco..probabilmente sbaglio qualcosa, ecco il frammento di codice :

var chkbox = document.createElement('input');
chkbox.type = 'checkbox';
chkbox.id = opzioniCat[q];
chkbox.name = opzioniCat[q];
chkbox.innerHTML = "test";
//add checkbox
document.getElementById('categorie').appendChild(chkbox);

Ecco praticamente mi crea all'interno di un ciclo for un insieme di checkbox ma manca il testo a fianco di ognuna..pensavo di crearlo tramite la riga
chkbox.innerHTML = "test"; ma non funziona...è sbagliato?

Necromachine
27-09-2008, 00:48
E' sbagliatissimo :D !!

L'innerHTML su un input non ha alcun effetto, perchè gli elementi input non ocntengono altro html, se vuoi mettere un testo a fianco devi creare una <label> (o anche uno <span> o un <p> o del testo semplice, ma semanticamente è meglio la label), se vuoi farla in javascript con le funzioni dom grosso modo diventa una roba tipo:

var chkbox = document.createElement('input');
chkbox.type = 'checkbox';
chkbox.id = opzioniCat[q];
chkbox.name = opzioniCat[q];
chkbox.value = "..."; //ricordati di assegnare un valore all'input, che è quello che verrà passato alla richiesta
//add checkbox
document.getElementById('categorie').appendChild(chkbox);

var label = document.createElement('label');
label.htmlFor = opzioniCat[q]; //l'id del checkbox, questa cosa è opzionale ma carina ;)
label.innerHTML = "test";
document.getElementById('categorie').appendChild(label);

C'è anche un altro modo più "brutale", ovvero:

document.getElementById('categorie').innerHTML = '<input type="checkbox" id="'+opzioniCat[q]+'" name="'+opzioniCat[q]+'" value="'+...+'" /><label for="'+opzioniCat[q]+'">test</label>';

Re_Kotc
27-09-2008, 09:57
E' sbagliatissimo !!

LOL grazie per l'onestà..in effetti cmq l'avevo messo a caso sperando fosse quello giusto..aveva un minimo di senso..grazie per le dritte mi sei stato utilissimo! :-)