JavaScript: déclaration de type IIF

Venant de VB, JavaScript n'est pas très facile à comprendre. Ne soyez pas négatif, j'ai essayé et cherché des charges mais sans chance. BTW, je crée un contrôle déroulant initialisé à partir d'une liste d'options Select dans JS.

Code fictif:

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

Je voudrais ajouter selected après la valeur de col seulement si col est égal à 'tournevis'.

J'ai essayé d'utiliser l'instruction if avec l' ? et le: mais ne peut pas sembler obtenir ma tête autour d'elle. Avoir " comme le fait la fausse valeur pas de travail. Aucun élément n'est sélectionné et la liste est vide. Supprimez L'instruction IF et tous les travaux.

Toutes les idées et encore, désolé pour le newb-ness.

26
demandé sur Alex Guerin 2011-12-24 07:59:01

5 réponses

'<option value="' + col + '"'+ (col === "screwdriver" ? " selected " : "") +'>Very roomy</option>';
53
répondu George Mauer 2011-12-24 04:09:44
var x = '<option value="' + col + '"'
if (col == 'screwdriver') x += ' selected';
x += '>Very roomy</option>';
3
répondu jspcal 2011-12-24 04:01:47

Quelque Chose comme ceci:

for (/* stuff */)
{
    var x = '<option value="' + col + '" '
        + (col === 'screwdriver' ? 'selected' : '')
        + '>Very roomy</option>';
    // snip...
}
3
répondu Matt Ball 2011-12-24 04:15:36

Si votre objectif final est d'ajouter des éléments à votre page, manipulez simplement le DOM directement. N'utilisez pas la concaténation de chaînes pour essayer de créer du HTML-quelle douleur! Voyez combien il est plus simple de simplement créer votre élément, au lieu du HTML qui représente votre élément:

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

, Puis, plus tard, lorsque vous mettez l'élément de votre page, au lieu de définir la innerHTML de l'élément parent, appelez - appendChild():

mySelectElement.appendChild(x);
2
répondu gilly3 2011-12-24 04:33:51

J'ai tapé ceci dans ma barre D'URL:

javascript:{ var col = 'screwdriver'; var x = '<option value="' + col + '"' + ((col == 'screwdriver') ? ' selected' : '') + '>Very roomy</option>'; alert(x); }
0
répondu Joe Phillips 2011-12-24 04:08:42