jQuery的条件总是第一个条件

时间:2014-03-21 16:56:43

标签: javascript jquery

我在jQuery中有这个条件函数,以便在需要时显示具有自己样式的特定消息:

function msg(type, text) {
    if (type="success"){
        $('.messageDisplay').attr('class', 'messageDisplay messages success');
        $('.messages').text(text);
        $('.messages').stop( true, false ).fadeIn(300).delay(2000).fadeOut(450);}
    else if (type="info"){
        $('.messageDisplay').attr('class', 'messageDisplay messages info');
        $('.messages').text(text);
        $('.messages').stop( true, false ).fadeIn(300).delay(2000).fadeOut(450);}
    else if (type="error"){
        $('.messageDisplay').attr('class', 'messageDisplay messages error');
        $('.messages').text(text);
        $('.messages').stop( true, false ).fadeIn(300).delay(2000).fadeOut(450);}
    else if (type="warning"){
        $('.messageDisplay').addClass('messages warning');
        $('.messages').text(text);
        $('.messages').stop( true, false ).fadeIn(300).delay(2000).fadeOut(450);}}

调用它时,它只需要第一个条件,因为始终添加到messageDisplay div的类是'messageDisplay messages info'。例如,在这种情况下,我调用"error"消息类型:

$('.tableContent').on('click', '.editIcon', function (e){
        if (editing==1){
            msg("error", "Acepta o anula la edición actual antes de editar otro registro");}

即使采用正确的文本,也会生成success样式的消息:

<div class="messageDisplay messages success">Acepta o anula la edición actual antes de editar otro registro</div>

多次检查jQuery中可能导致此行为的原因后,我无法找到它,我几乎可以肯定没有其他jQuery的功能导致这种情况。条件是否有问题?

2 个答案:

答案 0 :(得分:3)

if (type="success"){

应该是

if (type=="success"){

等等所有

= means assignment not comparison 

答案 1 :(得分:1)

尝试

if (type.toString() === "success") {

.

或者如果你确定type是一个字符串,那么

if (type === "success")

所有条件都一样。

您正在使用"="运算符,并且它是用于赋值的,请使用"==="确保您比较值之外的相同类型(字符串)。

至少你100%确定“type”是一个字符串,最好用toString()转换它

你也可以使用toString()但是你可能想检查一些差异,请看这个问题: What's the difference between String(value) vs value.toString()

注意:关于=====,请看一下这个问题: Which equals operator (== vs ===) should be used in JavaScript comparisons?