JavaScript: IIF-подобное утверждение - PullRequest
32 голосов
/ 24 декабря 2011

Исходя из VB, JavaScript не очень легко освоить.Пожалуйста, не отрицайте, я пробовал и искал грузы, но безуспешно.Кстати, я создаю раскрывающийся элемент управления, инициализированный из списка параметров Select в JS.

Пустой код:

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

Я хотел бы добавить selected после значенияcol ТОЛЬКО если col равно 'отвертке'.

Я пытался использовать оператор IF с?и: но, похоже, не могу обойти это.Наличие '' в качестве ложного значения не работает.Элементы не выбраны, а список пуст.Удалите оператор IF и все работает.

Любые идеи и еще раз, извините за новизну.

Ответы [ 5 ]

58 голосов
/ 24 декабря 2011
'<option value="' + col + '"'+ (col === "screwdriver" ? " selected " : "") +'>Very roomy</option>';
3 голосов
/ 24 декабря 2011

Примерно так:

for (/* stuff */)
{
    var x = '<option value="' + col + '" '
        + (col === 'screwdriver' ? 'selected' : '')
        + '>Very roomy</option>';
    // snip...
}
3 голосов
/ 24 декабря 2011
var x = '<option value="' + col + '"'
if (col == 'screwdriver') x += ' selected';
x += '>Very roomy</option>';
2 голосов
/ 24 декабря 2011

Если ваша конечная цель - добавить элементы на страницу, просто манипулируйте DOM напрямую. Не используйте конкатенацию строк, чтобы попытаться создать HTML - какая боль! Посмотрите, насколько проще просто создать свой элемент вместо HTML, который представляет ваш элемент:

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

Затем, позже, когда вы поместите элемент на страницу, вместо установки innerHTML родительского элемента, вызовите appendChild():

mySelectElement.appendChild(x);
0 голосов
/ 24 декабря 2011

Я набрал это в моей строке URL:

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