开发者问题收集

为什么 JavaScript toLowerCase 不起作用?

2011-07-20
10892

在此小提琴 http://jsfiddle.net/CBxbT/29/ 中,如果您单击黑色框,则会选择一种随机颜色,然后在其 ID 被剥离并更改为小写之后,将随机颜色的 ID 与您通过单击三个框之一“猜测”的任何颜色进行比较。

该小提琴可以工作,但相同的概念(即相同的代码但不同的元素名称)在我的实时网站上不起作用。在我的实时网站上,我收到了变量 guess 的警报,但之后我再也没有收到任何警报,而在小提琴中,它继续运行并在 ran 更改为小写后给我一个警报。

我这样做的方式是否有问题,可能会导致我的实时网站上出现问题。

ran = ran.toLowerCase();

来自 fiddle 的代码

$("#red, #blue, #green").click(function(e) { 
     guess = $(this).attr('id'); 
     alert(guess);
     ran = ran.toLowerCase(); //works here but not on my live site
    alert(ran);
    if(ran.charAt(1) === 'f'){
        ran = ran.slice(3);
    } else
        ran = ran.slice(1);
        alert(ran);

     if (guess === ran) { 
         $('#results').fadeOut(1000);
              } else { 
                  $('#wrong').fadeOut(1000); 
                  }
 }); 

我的实时网站 我的实际网站

单击开始按钮。它将显示一个随机选择的音频播放器。

单击底行数字中的一个拼写出的数字。这是您的“猜测”

根据代码,它应该向您发出随机选择的音频播放器编号的警报,但事实并非如此。

来自实时网站的相关代码

$("#one, #two, #three, #four, #five, #six, #seven, #eight, #nine, #ten, #eleven, #twelve, #thirteen, #fourteen, #fifteen, #sixteen").click(function(e) { 
     guess = $(this).attr('id'); 
     alert(guess);
     ran = ran.toLowerCase(); 
     alert(ran);
     if(ran.charAt(1) === 'f'){
        ran = ran.slice(3);
    } else
        ran = ran.slice(1);
     alert(ran);
     if (guess === ran) { 
         $('#right').fadeIn(1000);
              } else { 
                  $('#wrong').fadeIn(1000); 
                  }
 }); 
}
1个回答

如果您查看 JavaScript 错误控制台,您将看到以下内容:

ran is undefined

我建议您开始使用 Firebug 或类似程序,以便在开发时看到错误控制台。

在您的实时网站上,单击“开始”按钮的事件包含以下行:

var ran = getRandom(myArray, true);

var 关键字创建了一个名为 ran 的局部变量,因此您正在创建一个新变量而不是初始化全局变量。从该行中删除 var 即可。

JJJ
2011-07-20