你可以在一行JQuery中运行JS if语句和for循环吗?

时间:2013-07-27 23:35:17

标签: javascript jquery if-statement for-loop

我对学习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 个答案:

答案 0 :(得分:2)

有一个 lot 对你的代码没有多大意义。

首先,userResponse是什么?这个定义在哪里以及它在哪里设置?您是否在调试器下验证了它确实等于到“女孩”?

其次,你可能想在这里使用比较等于而不是赋值等于

if (userResponse = "girl") { // This should be ==

但是,这不应该阻止块运行。实际上,它会强制阻止始终运行,因为“girl”是真的。

第三,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(“确认您选择的性别”)。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()代码中,只要在该块中定义了单击事件处理程序。

答案 1 :(得分: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(也许它在其他地方)。 randomrandomagain

也是如此

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

答案 2 :(得分:0)

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

等于写==

if (userResponse = "girl") {

参考外观here

答案 3 :(得分:0)

当你放下时,你忘了关闭一些箭头:

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

将userResponse变量设置为“girl”,并将值传递给变量
检查userResponse等于“女孩”你应该把

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);
    }}}
)
});

p.s:你忘了关闭太多的箭头

相关问题