JavaScript中的条件不起作用。

4
我在这里检查条件以选择下拉框中的值。但是下面的代码似乎无法正常工作。
<option value="Chairman"'+ val["designation"]== "Chairmain" ? "selected" : "" +'>Chairman</option>

我认为单引号'和双引号"存在问题。我尝试了很多方法来修复它,但都没有帮助。

以下是我正在使用的完整代码:

$.each(management_details,function(key,val){
    cnt++;
    htm += '<select name="management[]" class="repeat-select-management">\n\
        <option value="0">Select Management</option>\n\
        <option value="Chairman"'+ val["designation"]== "Chairmain" ? "selected" : "" +'>Chairman</option>\n\
        <option value="Vice Chairman">Vice Chairman</option>\n\
        <option value="Vice Chancellor">Vice Chancellor</option>\n\
        <option value="Secretary">Secretary</option>\n\
        <option value="Registrar">Registrar</option>\n\
        <option value="Dean">Dean</option>\n\
        <option value="Owner">Owner</option>\n\
        <option value="Other">Other</option>\n\
    </select>';
});

有人能建议我如何解决它吗?


2
试图弄清楚这段代码正在做什么很痛苦。不要通过将字符串拼在一起来生成HTML,而是使用DOM。 - Quentin
我只是在检查val["desgination"]是否为Chairman,如果是,则会在下拉菜单中被选中。 - Kalpit
2
"'+ (val["designation"]== "Chairmain" ? "selected" : "") +'> 使用括号来防止三元运算符变得贪婪。 - scragar
1个回答

5
将三元运算符括在括号中即可解决问题。
尝试替换以下这一行:
'<option value="Chairman"'+
    val["designation"]== "Chairmain" ? "selected" : "" +
    '>Chairman</option>\n\'

使用:

'<option value="Chairman"'+
    (val["designation"]== "Chairmain" ? "selected" : "") +
    '>Chairman</option>\n\ '

JavaScript可能会混淆三元语句中属于else部分的内容和不属于该部分的内容。

(我添加了单引号以避免在我的答案中放置整个多行字符串)


@user3164335:不用谢!请考虑采纳我的答案 :-) - Cerbrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接