Javascript 按一下按钮洗牌一组牌

Javascript 按一下按钮洗牌一组牌,javascript,html,arrays,onclick,Javascript,Html,Arrays,Onclick,我希望能够点击下面的按钮,在我的牌组中洗牌。 到目前为止,我已经创建了一个事件监听器,当单击该监听器时,它将调用函数shuffleCards,该函数接受一个数组。我传递的数组是在练习中提供给我的,这是一个卡片数组 当我点击按钮时,什么也没有发生,我知道这与作用域有关,但我不知道如何修改我的代码使其正常工作 先谢谢你 HTML 对代码做了一些更改,我不是在说html,而是为您的卡片洗牌提供了一个解决方案。 创建了一个create cards按钮,该按钮触发createCards功能,然后尝试单击您

我希望能够点击下面的按钮,在我的牌组中洗牌。 到目前为止,我已经创建了一个事件监听器,当单击该监听器时,它将调用函数
shuffleCards
,该函数接受一个数组。我传递的数组是在练习中提供给我的,这是一个卡片数组

当我点击按钮时,什么也没有发生,我知道这与作用域有关,但我不知道如何修改我的代码使其正常工作

先谢谢你

HTML


对代码做了一些更改,我不是在说html,而是为您的卡片洗牌提供了一个解决方案。 创建了一个
create cards
按钮,该按钮触发
createCards
功能,然后尝试单击您的洗牌并查看控制台日志您可以看到一个洗牌数组。 注意:在单击洗牌之前,请单击创建卡按钮,因为您可能会记录空阵列 此外,我还更改了卡的范围,因为它应该可以被其他功能访问
const suit='hearts';
var卡=[];
函数createCards(){
for(设i=1;i{
卡片=洗牌卡片(卡片);
})
creatorBtn.addEventListener(“单击”,()=>{
createCards();
})
函数shuffleCards(数组){
var i=0,
j=0,
温度=零
对于(i=array.length-1;i>0;i-=1){
j=数学楼层(数学随机()*(i+1))
温度=数组[i]
数组[i]=数组[j]
数组[j]=temp
}
console.log(数组)
返回数组;
}
Shuffle

create cards
cards变量的作用域是它所在的函数。如果将
const cards=[];
放在该函数上方,则应该能够在事件列表中访问它。最好将其设为
createCards()的返回值
;我看到您正在从
shuffleCards
函数返回卡片,但您没有将其存储在任何变量中,而且如果您在shuffle函数后看到将其记录在控制台中,那么如果卡片确实被洗牌,更新UI应该是我的下一个任务assume@SriVenkataPavanKumarMHS你好,好的,我应该去商店这个函数是一个变量?你能解释一下为什么吗?我对这个很陌生。还有当我
console.log(数组)时
我可以看到,它所做的只是记录13张牌,然后每次单击时在屏幕上复制它们。这意味着我的洗牌不起作用……有什么提示吗?@AngelaInniss当我看到你的洗牌代码工作正常时,为了证明这一点,我发布了一个答案,提到保存,我要求将函数的返回值保存到牌中,如下所示我已经在我的答案中显示了:)Hello@pavankumar这真的很有帮助,现在更清晰了。我将把它应用到我的代码中。谢谢!!
<button type="button" id="shuffle" class="shuffle" class="btn btn-lg btn-secondary">Shuffle</button>
const suit = 'hearts';
const cardsWrapper = document.querySelector('.cards-wrapper');

function createCards() {
  const cards = [];
  // Create an array with objects containing the value and the suit of each card
  for (let i = 1; i <= 13; i += 1) {
    const cardObject = {
      value: i,
      suit,
    };
    cards.push(cardObject);
  }

  // For each dataObject, create a new card and append it to the DOM
  cards.forEach((card, i) => {
    const positionFromLeft = i * 15;
    const cardElement = document.createElement('div');
    cardElement.setAttribute('data-value', card.value);
    cardElement.classList.add('card', `${card.suit}-${card.value}`);
    cardElement.style.left = `${positionFromLeft}px`;
    cardsWrapper.append(cardElement);
  });
}
const shufflebtn = document.getElementById('shuffle');

shufflebtn.addEventListener("click", () => {
  shuffleCards(cards);
})

function shuffleCards(array) {
  var i = 0
    , j = 0
    , temp = null

  for (i = array.length - 1; i > 0; i -= 1) {
    j = Math.floor(Math.random() * (i + 1))
    temp = array[i]
    array[i] = array[j]
    array[j] = temp
  }
  return array
}