2011-12-24 18 views
23

Proveniente da VB, JavaScript non è molto facile da ottenere. Per favore non essere negativo, ho provato e cercato carichi ma senza fortuna. A proposito, sto creando un controllo a discesa inizializzato da un elenco di opzioni Select in JS.JavaScript: dichiarazione simile a IIF

codice fittizio:

var col = 'tardis'; 
var x = '<option value="' + col + '">Very roomy</option>'); 

vorrei aggiungere selected dopo che il valore di Col SOLO se col è uguale a 'cacciavite'.

Ho provato a utilizzare l'istruzione IF con? e il: ma non riesco a capirlo. Avere "come valore falso non funziona. Nessun elemento è selezionato e l'elenco è vuoto. Rimuovi la dichiarazione IF e tutto funziona.

Tutte le idee e ancora, mi dispiace per la novità.

+1

vi preghiamo di mostrare ciò che si è tentato e perché non funziona. – deceze

+0

La prima cosa che devi sapere, riguarda l'accesso alla console del browser. Ctrl + Maiusc + J in chrome, o F12 in IE9 + o il plugin firebug in firefox. Puoi provare il codice nella console, vedere l'intera pagina HTML e selezionare gli elementi su di esso e visualizzare i registri dalla tua app (usa console.log (.... tutto ciò che vuoi ...) invece di alert()). Javascript è un linguaggio semplice con un numero di concetti molto basso ma un sacco di trucchi da evitare. Guarda la mia presentazione: http://dl.dropbox.com/u/108084/all-of-javascript/example_scripts.html sentiti libero di twitter/email me dalle mie informazioni in là con domande –

risposta

49
'<option value="' + col + '"'+ (col === "screwdriver" ? " selected " : "") +'>Very roomy</option>'; 
+0

Sei sicuro che ci sono 3 = (===) segni? In alcune risorse Web che ho letto dovresti inserire solo 2 = (==). Si prega di chiarire la questione. http://www.smipple.net/snippet/dsheardown/Javascript%20IIF%20example –

+2

@YoustayIgo in javascript '===' significa "uguaglianza rigorosa" mentre '==' significa "uguaglianza con coercizione". Mentre in questo caso è difficile trovare un valore per 'col' dove è importante, in generale si preferisce la versione' === 'a meno che non si desideri forzatamente la coercizione. Per ulteriori pensieri su questo vedi [Javascript the Good Parts] (http://bdcampbell.net/javascript/book/javascript_the_good_parts.pdf) che è fondamentalmente la Bibbia per molti sviluppatori di javascript. (In questo ci sono molti disaccordi e fazioni ma la maggior parte concorda generalmente sull'idea giusta) –

+0

Thx per il chiarimento :) –

3
var x = '<option value="' + col + '"' 
if (col == 'screwdriver') x += ' selected'; 
x += '>Very roomy</option>'; 
3

Qualcosa di simile a questo:

for (/* stuff */) 
{ 
    var x = '<option value="' + col + '" ' 
     + (col === 'screwdriver' ? 'selected' : '') 
     + '>Very roomy</option>'; 
    // snip... 
} 
0

ho digitato questo nella mia barra degli indirizzi:

javascript:{ var col = 'screwdriver'; var x = '<option value="' + col + '"' + ((col == 'screwdriver') ? ' selected' : '') + '>Very roomy</option>'; alert(x); } 
2

Se il vostro obiettivo finale è quello di aggiungere elementi alla tua pagina, basta manipolare il DOM direttamente. Non utilizzare la concatenazione di stringhe per provare a creare HTML: che dolore! Vedere quanto più semplice è quello di creare solo il tuo elemento, anziché il codice HTML che rappresenta il vostro elemento:

var x = document.createElement("option"); 
x.value = col; 
x.text = "Very roomy"; 
x.selected = col == "screwdriver"; 

Poi, più tardi, quando si mette l'elemento nella tua pagina, invece di impostare la innerHTML dell'elemento genitore , chiamare appendChild():

mySelectElement.appendChild(x); 
+0

@RobG - L'inclusione dell'attributo 'selected' in un'