【问题标题】:Tic - Tac - Toe... each() not a functionTic - Tac - Toe... each() 不是函数
【发布时间】:2018-09-03 23:59:00
【问题描述】:
function whoWonGame(){

const winnerSection = ['row1', 'row2', 'row3','column1', 'column2', 'column3', 'dag1', 'dag2' ];
let winner = null;
winnerSection.each((section) => {

  let match = true;

  for(let i = 1; i <= 2; i++ ){

   $(`${section}`).each((div) => {

      if(div.hasClass(`player${i}`)){

          match = false;
      }
    })

    if(match){

      winner = `player${i}`;

    }

    return winner;
  }


})

}

我收到一条错误消息,提示winnerSection.each 不是函数。怎么可能?

【问题讨论】:

  • 表示${section}未定义。
  • 使用 forEach 或 jquery $.each
  • 除了each问题之外,winnerSection中的元素是ID吗?上课?在${section} 之前需要.#,因为row1 等肯定不是元素名称。

标签: javascript jquery foreach each tic-tac-toe


【解决方案1】:

winnerSection 不是 jQuery 对象。要使用 .each 遍历数组,您必须这样做:

$.each(winnerSection, function(index, section) {
});

查看文档: http://api.jquery.com/jquery.each/

或使用 javascript foreach 函数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

winnerSection.forEach(function(section, index) {
});

注意:两个函数的参数顺序。

--- 更新 ---

我删除了完整的代码,因为我没有足够的信息来推断解决方案。我将答案限制在第一个错误/问题上。

【讨论】:

  • 这几乎是正确的。只有$(`${section}`) 没有选择任何元素。
  • 是的@Xufox,这是真的,我还没有评估但是 ${} 在我知道之前它不是一个 jquery 选择器。 Solomon 只提到了winnerSection.each,这就是我要解决的问题。
  • 好吧,${} 是模板文字语法的一部分。这不是重点。问题是这些将评估为例如$("row1"),应该是$(".row1")
  • @Xufox,我删除了代码,因为如果没有更多关于问题的信息,就不可能发布解决方案,而且代码也不是微不足道的! :)
【解决方案2】:

winnerSection 没有扩展 jQuery。试试这个:

$(winnerSection).each(.......);

【讨论】:

    【解决方案3】:

    它是Array.prototype.forEach,而不是each

    【讨论】:

    • jQuery 的.each() 是一个完全有效的函数。
    • 我没有用jQuery,但是好像这个函数应该这样调用? $.each(arrayObject, callback)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多