为什么JavaScript的toLowerCase函数无法正常工作?

3
在这个代码片段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); 
                  }
 }); 
}

toLowerCase 是 Javascript 的一部分。你能否改进你的问题标题?也许可以总结一下问题? - Lightness Races in Orbit
你看到了什么迹象表明它没有工作?你能告诉我们你的现场网站有什么不同吗?(正确答案不是“没有任何不同”) - Gareth
你在JavaScript控制台中看到了错误吗?您能否将确切的代码从您的实时站点复制粘贴?您确定它正在警报的确切位置而不是其他地方(将其更改为alert(“foo”)以进行测试)? - JJJ
2
ran = ran.toLowerCase(); 这行代码执行前,ran变量的值是什么?这里没有对ran进行初始化。 - Kreker
2
你能发一下那些不能运行的代码吗?而不是那些可以运行的代码?我猜测这可能只是一个简单的笔误之类的问题... - Town
显示剩余8条评论
1个回答

3
如果您查看JavaScript错误控制台,您会看到以下内容:
ran is undefined

我建议您开始使用Firebug或类似的工具,这样在开发过程中您就可以看到错误控制台。

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

var ran = getRandom(myArray, true);
< p > var 关键字创建了一个名为 ran 的局部变量,因此您正在创建一个新变量而不是初始化全局变量。从该行中删除 var ,它就应该可以工作了。


那是我之前说过的,"ran" 没有值。顺便说一下,对于我来说,这个网站是正确的。 - Kreker
我正在使用Firebug,但我是个新手,所以对它不是很熟练。无论如何,你能告诉我为什么如果我已经在使用它,ran是未定义的吗?我该怎么解决它?如果你能帮忙,谢谢。 - Leahcim
好的,谢谢,那个问题已经解决了,但它没有继续进行比较,就像在fiddle上一样... - Leahcim
1
这是因为在初始化 ran 之后,您将其更改为 jQuery 对象:ran = $('#' + ran); 但稍后将其视为字符串。 - JJJ
当我尝试使用 toLowerCase() 时,我将其视为字符串????这就是为令 Firebug 告诉我 ran.toLowerCase(); 不是一个函数的原因吗?你能建议如何修复它吗? - Leahcim
好的,停止使用一个变量来完成所有事情。不要再使用 ran = $('#' + ran); ran.show(); 这样的代码,而是使用 var box = $( '#' + ran ); box.show(); 或者更好的 $( '#' + ran ).show();。这样 ran 仍然保持为字符串。同样,最好使用 var selection = ran.toLowerCase(); 等方式,以便原始变量保持不变。 - JJJ

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