我在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的功能导致这种情况。条件是否有问题?
答案 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?