javascript数组-在eventlistener上进行拼接和推送

javascript数组-在eventlistener上进行拼接和推送,javascript,arrays,Javascript,Arrays,我正在努力做一些JavaScript作业。当页面加载时,我们必须给卡片分配一个随机数。当你点击一张卡片时,它会把它推到阵列的末端。我的主要问题是创建一个临时变量并存储单击的元素 HTML: <fieldset id="cards-area"> <legend>Hand of cards</legend> <div class="hand-of-cards" id="cards"> <div></div>

我正在努力做一些JavaScript作业。当页面加载时,我们必须给卡片分配一个随机数。当你点击一张卡片时,它会把它推到阵列的末端。我的主要问题是创建一个临时变量并存储单击的元素

HTML:

<fieldset id="cards-area">
  <legend>Hand of cards</legend>
  <div class="hand-of-cards" id="cards">
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
  </div>
  <button id="sort-cards" type="button">Sort</button>
  <button id="reverse-cards" type="button">Reverse</button>
</fieldset>
(function () {
    var cardElements, cardValues;

    // WRITE CODE HERE TO MAKE THE #cards ELEMENT WORK
    //This makes all the div elements an element
    cardElements = Array.prototype.slice.call(document.querySelectorAll('#cards div'));

    //This creates an empty array to store elements into
    cardValues = [];

    cardElements.forEach(function (cardElement) {
        // Gives the card elements a random number when the page loads
        cardElement.textContent = Math.floor(Math.random() * 99) + 1;

        //This pushes the card elements into the array
        cardValues.push(cardElement);

        //Event listener when the card element is clicked it
        //stores that card element into a variable
        //splices that cardElement
        //and pushes that cardElement to the end which was stored into a variable
        cardElement.addEventListener('click', function () {
            var whichCard = cardValues.indexof(cardElement);
            cardValues.splice(whichCard, 1);
            cardValues.push(whichCard);
        }, false);
    });
}());

看看吧。如果您尝试单击任何数字,它将把它推到数组的末尾

(函数(){
var cardElements,cardValues;
//在此处编写代码以使#cards元素工作
//这使所有div元素都成为一个元素
cardElements=Array.prototype.slice.call(document.querySelectorAll(“#cards div”);
//这将创建一个空数组来存储元素
var cardValues=[];
forEach(函数(cardElement){
//当页面加载时,为卡片元素提供一个随机数
cardElement.textContent=Math.floor(Math.random()*99)+1;
//这会将卡元素推入阵列
cardValues.push(cardElement);
//单击卡片元素时的事件侦听器
//将该卡元素存储到变量中
//拼接该元件
//并将cardElement推到存储在变量中的末尾
cardElement.addEventListener('click',函数(){
var变量数;
//var whichCard=cardValues.indexof(cardElement);

对于(i=0;我能请您更具体地解释一下问题是什么吗?我希望能够单击其中一个卡元素,并且该卡元素将移动到数组的末尾。单击时,什么都不会发生。我需要做的是,单击一个卡元素时,它将其存储为临时变量,拼接单击的元素,然后按t键。)临时变量。我想您可能打算使用
cardValues.push(cardElement);
而不是
cardValues.push(whichCard);
此外,您没有在任何地方更新DOM,您只是在更新数组。我有文档。addEventListener('DOMContentLoaded',function(){在我整个代码的开头,我需要再次更新它吗?只会触发一次。使用它的原因是确保元素在JS中查询之前呈现在页面上。如果您在关闭
标记之前粘贴JS的
元素,您根本不需要它(这样它只在所有前面的html呈现之后加载)。