0

我对学习 Javascript 和 Jquery 都很陌生。

在我正在创建的网站中,我试图在一行 JQuery 中插入一个 Javascript if 语句和一个 for 循环。最后一次确认没有运行。我怀疑是 if 语句导致了这个问题。我怎样才能解决这个问题?这是我的代码的样子。

$(document).ready(function() {
    $(".button3").click(function() {
        var lastname = $('#lastnameresponse').val();
        confirm("You're last name is" + " " + lastname);
        if (userResponse = "girl") {
            for (var i = 0; i <= girlnames.length; i++) {
                confirm("Your future daughter's name is" + " " + random + " " + randomagain + " " + lastname);
            })
    });
4

4 回答 4

2

您的代码有很多没有意义的地方。

首先,什么是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()代码中,前提是在该块中定义了两个单击事件处理程序。

于 2013-07-27T23:42:43.937 回答
2

首先:Your不是You're:)

其次,userResponse未定义。也许它是在其他地方定义的。

为了比较,使用==运算符。

你确定那是你想做的吗?我看你也confirm有。像这样使用confirm

$(".button3").click(function() {
    var lastname = $('#lastnameresponse').val();
    // confirm() returns true or false, depending on the clicked button
    is_confirmed = confirm("You're last name is" + " " +lastname);
    if (true == is_confirmed) {
        for (var i = 0; i <= girlnames.length; i++) {
            confirm ("Your future daughter's name is" + " " + random + " " + randomagain + " " +   lastname);
        }
    }
});

girlnames在这里也没有定义(也许它在其他地方)。random和_randomagain

至于“在”jQuery 中编写 JavaScript:不存在这样的问题。jQuery 是一个用 Javascript 编写的库,它提供了有用的功能来简化开发。

于 2013-07-27T23:44:54.610 回答
0

以下语句不包含正确的 JavaScript 比较运算符

等于写==

if (userResponse = "girl") {

供参考看这里

于 2013-07-27T23:41:49.103 回答
0

您忘记关闭一些箭头,无论如何,当您放置:

if (userResponse ="girl"){...}  

您将 userResponse 变量设置为“girl”,并且将值传递给变量只是
为了检查 userResponse 等于“girl”,您应该输入

if (userResponse =="girl")

您的最终代码将如下所示

 $(document).ready(function(){
$(".button3").click(function() {
var lastname = $('#lastnameresponse').val();
confirm("You're last name is" + " " +lastname);
if (userResponse ="girl") {
    for (var i = 0; i <= girlnames.length; i++) {
    confirm ("Your future daughter's name is" + " " + random + " " + randomagain + " " +   lastname);
    }}}
)
});

ps:你忘记关闭太多箭头了

于 2013-07-27T23:48:13.920 回答