首页 > 解决方案 > 数组推送不起作用

问题描述

为什么不container.push(random[0])工作?

我找不到问题的解决方案......我需要将 HTML 对象放入容器数组中,而且它不会去那里。

let container = new Array();
let x = document.querySelectorAll('.trigger');

function getFlag() {
  let random = [x[Math.floor(Math.random() * x.length)]];

  if (!container.includes(random[0])) {
    random[0].classList.remove('trigger');

    console.log('random n: ' + random[0]);
    container.push(random[0]);
  }
}

console.log('x length: ' + x.length)
console.log('array length: ' + container.length)
.trigger {
  display: none;
}
<body onload="getFlag()">
  <section class="trigger">
    <p>1</p>
  </section>
  <section class="trigger">
    <p>2</p>
  </section>
  <section class="trigger">
    <p>3</p>
  </section>
</body>

标签: javascriptarraysrandom

解决方案


试试这个也许:

let container = [];
let x = document.querySelectorAll('.trigger');

function getFlag() {
  console.log("pushed");
  
   /*When you click on the button, if "pushed" is not logged, here's an error*/
  
  let random = [x[Math.floor(Math.random() * x.length)]];

  if (!container.includes(random[0])) {
    random[0].classList.remove('trigger');

    console.log('random n: ' + random[0]);
    container.push(random[0]);
    
    console.log('x length: ' + x.length)
    console.log('array length: ' + container.length)
  }
}

如果在函数将随机数推送到数组后记录数组的长度,也许你会得到结果


推荐阅读