2011-12-24 14 views
23

Viniendo de VB, JavaScript no es muy fácil de aprender. Por favor, no seas negativo, he intentado y buscado cargas pero sin suerte. Por cierto, estoy creando un control desplegable inicializado desde una lista de opciones Select en JS.JavaScript: IIF como declaración

código ficticio:

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

me gustaría añadir selected después de que el valor de la col col sólo si es igual a 'destornillador'.

He intentado utilizar la instrucción IF con? y el: pero parece que no puedo entenderlo. Tener '' como el valor falso no funciona. No se seleccionaron elementos y la lista está en blanco. Elimine la instrucción IF y todo funciona.

Cualquier idea y otra vez, perdón por la newb-ness.

+1

Por favor, muéstrenos lo que probó y por qué no funciona. – deceze

+0

Lo primero que debe saber, por cierto, es sobre el acceso a la consola del navegador. Ctrl + Shift + J en cromo, o F12 en IE9 + o el plugin firebug en firefox. Puede probar el código en la consola, ver su página HTML completa y seleccionar elementos en ella, y ver los registros en su aplicación (use console.log (... cualquier cosa que desee ...) en lugar de alerta()). Javascript es un lenguaje simple con un recuento de conceptos muy bajo pero con muchos errores que evitar. Echa un vistazo a mi presentación: http://dl.dropbox.com/u/108084/all-of-javascript/example_scripts.html no dudes en escribirme o enviarme un correo electrónico desde mi información allí con preguntas –

Respuesta

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

¿Estás seguro de que hay 3 = (===) signos? En algunos recursos web que leí, debería poner 2 = (==) solamente. Por favor aclara el asunto http://www.smipple.net/snippet/dsheardown/Javascript%20IIF%20example –

+2

@YoustayIgo en javascript '===' significa "igualdad estricta" mientras que '==' significa "igualdad con coacción". Si bien en este caso sería difícil encontrar un valor para 'col' donde sea importante, en general, desea preferir la versión' === 'a menos que desee específicamente la coerción. Para más ideas sobre esto, consulte [Javascript the Good Parts] (http://bdcampbell.net/javascript/book/javascript_the_good_parts.pdf), que es básicamente la biblia de muchos desarrolladores de JavaScript. (En eso hay muchos desacuerdos y facciones, pero la mayoría está de acuerdo en que generalmente es la idea correcta) –

+0

Thx para la aclaración :) –

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

Algo como esto:

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

me escribió esto en mi barra de direcciones:

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

Si su meta final es añadir elementos a su página, simplemente manipular el DOM directamente. No use la concatenación de cadenas para intentar crear HTML, ¡qué dolor! Ver cuánto más sencillo que es simplemente crear su elemento, en lugar del HTML que representa su elemento:

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

Luego, más tarde, cuando se pone el elemento en su página, en lugar de establecer la innerHTML del elemento padre , llame al appendChild():

mySelectElement.appendChild(x); 
+0

@RobG - Incluir el atributo 'selected' en un'

Cuestiones relacionadas