您的代码有很多没有意义的地方。
首先,什么是userResponse
?这是在哪里定义的,在哪里设置?有没有在调试器下验证过确实等于“girl”?
其次,您可能打算在这里使用比较等于而不是赋值等于:
if (userResponse = "girl") { // This should be ==
但是,这不应阻止块运行。事实上,它会强制块始终运行,因为“女孩”是真实的。
三、什么是girlnames
?它是一个数组吗?这是在哪里定义的?您是否确认它确实包含有效物品?
最后,我相信你的for
循环是不正确的:
for (var i = 0; i <= girlnames.length; i++) {
应该:
for (var i = 0; i < girlnames.length; i++) {
数组从 0 开始,因此girlnames[girlnames.length]
不是有效项。
但是,考虑到您不在循环中的任何地方使用该变量,这实际上也不应该导致任何错误。i
我将使用脚本调试器(通常在现代浏览器中)逐行遍历您的代码,F12并在以下位置设置断点:
var lastname = $('#lastnameresponse').val();
然后验证每一行的行为是否正确。如果这仍然不起作用,您需要发布更多代码,以便我们更好地了解正在发生的事情。
更新:
根据您的评论:
这里是定义 userResponse 变量的地方: $(document).ready(function(){ $("#girlimg").click(function() { var userResponse = prompt("Confirm the gender you selected").toLowerCase; $('html, body').animate({ scrollTop: $(".LastName").offset().top }, 2000);
似乎在标签userResponse
的点击处理程序中声明:#girlimg
$("#girlimg").click(function() {
// Everything declared here is local to this function
var userResponse = confirm(); // local variable
});
因此,它不能在点击处理程序中访问.button3
。您需要userResponse
在两个函数都可以访问的范围内声明。可能是全局的(这在 JavaScript 中是不受欢迎的)或在您的$(document).ready()
代码中,前提是在该块中定义了两个单击事件处理程序。