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
}