【问题标题】:Why is the rest of my JS code not letting my JQuery run?为什么我的 JS 代码的其余部分不让我的 JQuery 运行?
【发布时间】:2016-10-12 22:28:48
【问题描述】:

为这个基本问题道歉,但我才刚刚开始学习 JS。我正在尝试构建一个二十一点游戏,我从我的 .js 文件开始,通过创建一个构造函数(用于卡片),然后我在该函数中定义了一个方法。这是我的 .js 文件中的代码(我没有显示实际 cardToString 函数内部的内容,因为它大约有 70 行长): 编辑:有人问我包含整个代码,所以这里是:

 function Card(rank, suit) {
this.rank = rank;
this.suit = suit;
this.toString = cardToString;
this.createNode = cardCreateNode;
}
function cardToString() {
var rank;
var suit;
switch (this.rank) {
    case "A" :
        rank = "Ace";
        break;
    case "2" :
        rank = "Two";
        break;
    case "3" :
        rank = "Three";
        break;
    case "4" :
        rank = "Four";
        break;
    case "5" :
        rank = "Five";
        break;
    case "6" :
        rank = "Six";
        break;
    case "7" :
        rank = "Seven";
        break;
    case "8" :
        rank = "Eight";
        break;
    case "9" :
        rank = "Nine";
        break;
    case "10" :
        rank = "Ten";
        break;
    case "J" :
        rank = "Jack";
        break;
    case "Q" :
        rank = "Queen";
        break;
    case "K" :
        rank = "King";
        break;
    default :
        rank = null;
        break;
    }
switch (this.suit) {
    case "C" :
        suit = "Clubs";
        break;
    case "D" :
        suit = "Diamonds";
        break;
    case "H" :
        suit = "Hearts";
        break;
    case "S" :
        suit = "Spades";
        break;
    default :
        suit = nill;
        break;
    }

if (rank == null || suit == null)
    return "";
else
    return rank + " of " suit;
}

$(document).ready(function() {
$("#deal").click(function() {
    $("#hit").fadeOut('slow');
});

});

我完全糊涂了,因为当我将它放入 .js 文件时,jQuery 不起作用,但是当我注释掉除 jQuery 之外的所有内容时,它工作正常。我确定这是我不知道的基本问题,但是我已经搜索了一段时间,但找不到答案。基本上,我不知道为什么我的前几位 JS 会阻止 jQuery 工作。

编辑:有人问我是否检查了控制台是否有错误,果然我得到了一个:

Uncaught SyntaxError: Unexpected identifier

旁边写着“jsjquery.js:4”,我认为 4 是指代码行,它在开头是一个空行(我在前几行有一些 cmets,然后在前面留了一行我开始编码)。我删除了空行,现在它说错误在第 80 行,就是这段代码:

 return rank + " of " suit;

当我注释掉除 jQuery 之外的所有内容时,此错误就会消失。 这可能会让你们明白一切,但我还是迷路了!

谢谢。

编辑:好的最终编辑我保证,哈哈。对于任何可能遇到这个问题并寻找答案的人:我犯了几个语法错误,但真正的问题是我没有定义方法 cardCreateNode。我没有意识到不这样做会导致其他一切都无法运行。感谢所有回复的人!

【问题讨论】:

  • 您检查浏览器控制台是否有错误?
  • 您是否发布了所有代码? cardCreateNode 未在您发布的任何地方定义。
  • How to debug javascript。有很多关于如何开始和学习如何调试的非常好的博客/文章/问题。
  • 分享你遇到的错误...
  • 不行,相关的代码应该贴在这里

标签: javascript jquery


【解决方案1】:
default :
        suit = nill;
        break;

意外的标识符是语法错误。显然你在这里的意思是 null,而不是 nil。

【讨论】:

  • 已修复,感谢指出!但我仍然收到第 80 行的相同错误消息...
【解决方案2】:

由于您根据帖子的更新遇到不同的错误,我将回答您的最新问题,即您在此行收到错误:

return rank + " of " suit;

您缺少 " of " 另一侧的连接,因此它应该如下所示:

return rank + " of " + suit;

在你的 switch 语句中你也有这一行:

default :
    suit = nill;
    break;

我认为在这里您的意思是将值设置为 null 而不是 nill,如下所示:

default :
    suit = null;
    break;

【讨论】:

  • 谢谢!我错过了那个讨厌的“+”号!但是现在我得到以下信息:
  • 好的,这应该在我上面的评论中,但我错误地按下了回车...我现在收到的错误消息是“未捕获的 ReferenceError:cardCreateNode 未定义”。当我在函数中说 this.createNode = cardCreateNode 时我没有定义它吗?
  • 您没有在原始帖子中包含 cardCreateNode 函数的代码,所以我看不到它的样子。也许更新您的原始问题以包括此?它在一个单独的文件中吗?如果是这样,它是否在包含原始问题中代码的文件之前加载?
  • 您好,感谢您的回复。我还没有定义那个方法,这是问题吗?如果我为一个对象分配一个方法,即使我不使用它,我是否需要定义它?我只是假设它不会做任何事情,除非我实际使用它,这就是为什么我很困惑我的 jQuery 甚至没有工作,因为它与对象无关......如果是这样,我将定义所有方法作为基本功能,然后看看是否有效。
  • 正如您已经解决的那样,是的,它需要被定义。没问题很高兴帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 2012-07-05
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
相关资源
最近更新 更多