0

[更新]我的错..我没有正确查看代码..我应该发现这么小的错误..真可惜..我现在想删除这个问题但无济于事......这将是如果有人可以帮我删除它,那就太好了。我认为这样一个愚蠢的问题不应该出现在这里。


我有这个功能:function magic(a,b,c){

  $("#a").on("mouseover", "."+a, function() { 

    $("#a").css("background", b).css("left", c);
    alert(a); 

    if(a="a"){
         b = "b";
         c = "10%";
    }else{
         b = "a";
         c = "0%";
    }
    alert(b);
    alert(c);

    $("#a").animate({
         "top":c
    },{
         duration:2000,
         complete:function(){
         $("."+a).addClass(b).removeClass(a);
         }
    });
  });
}
        After I execute it twice with different arguments `onLoad`        
  magic("a","black","10px");
  magic("b","red","2px");

一次 mouseover .a,它应该alert是“a”,“b”,然后是“10%”, * ,它确实如此。* 但是,第二次 mouseover 是过去的- .a.b现在), 而不是alert“b”,“a”,“0%”, *奇怪的是,它是alert“b”,然后是“b”,然后是“ 10%”。* 我可以给出的结论是,当通过 if(a="a"){ b = "b"; c = "10%"; }else{ b = "a"; c = "0%"; a"a""b"alert 如果有人能解释它并提供解决方案,我将不胜感激。

4

4 回答 4

3

比较运算符 is ==, not=

所以

if(a == "a"){ ...
于 2012-05-07T09:11:08.813 回答
0

它不是一个非常奇怪的行为,你使用赋值运算符=而不是比较运算符==,它总是true

if(a == "a"){
     b = "b";
     c = "10%";
} else {
     b = "a";
     c = "0%";
}
于 2012-05-07T09:14:36.520 回答
0
if(a = "a"){

不是

if(a == "a"){

-- 前者赋值给"a"a,然后“返回”a作为表达式值,第二个进行比较并返回trueor false

于 2012-05-07T09:11:23.947 回答
0
if(a = "a"){..}

应该

if(a == "a"){...}

或者

if(a === "a"){...}
于 2012-05-07T09:19:09.593 回答