Javascript 如何洗牌用户添加的数组中的项目并显示结果?

Javascript 如何洗牌用户添加的数组中的项目并显示结果?,javascript,Javascript,这里是Javascript初学者, 我需要给最终用户一个选项来随机分配他们的库存。我创建了一个函数来存储用户的项目,但无法让第二个函数(shuffleFunction)用于随机化。我知道有很多例子,但我需要帮助了解我在第二个函数中具体做错了什么。控制台错误读取(UncaughtTypeError:shuffleFunction不是htmlButtoneElement.onclick上的函数) 这是为了学习 <script type="text/javascript">

这里是Javascript初学者, 我需要给最终用户一个选项来随机分配他们的库存。我创建了一个函数来存储用户的项目,但无法让第二个函数(shuffleFunction)用于随机化。我知道有很多例子,但我需要帮助了解我在第二个函数中具体做错了什么。控制台错误读取(UncaughtTypeError:shuffleFunction不是htmlButtoneElement.onclick上的函数)

这是为了学习

    <script type="text/javascript">
   var items = [];

   function myFunction()
   { "use strict";
         var add = document.getElementById("collector");
         items.push(document.getElementById("input").value);

    add.innerHTML = items.join('<br/>'); 
   }

var shuffleFunction = [ ];

function shuffleFunction()
    {
    while (items.length > 0) {
          let rnd = Math.floor( Math.random( ) * items.length);
          shuffleFunction.push( items[ rnd ] );
          items.splice( rnd, 1 );         // remove position from old array
          shuffle.push(document.getElementById("shuffle").value);
}
    }
console.log( "Shuffled items: " + items ); 



  </script>



    <form>

  <input id="input" type=text>
   <input type=button onclick="myFunction()" value="Add Item"/>



  <button id="shuffle" type="button" onclick="shuffleFunction()" value="Shuffle Items">Shuffle!</button>

 <div id = collector > 
  </div>

   </form> 

var项目=[];
函数myFunction()
{“严格使用”;
var add=document.getElementById(“收集器”);
items.push(document.getElementById(“输入”).value);
add.innerHTML=items.join(“
”); } var shuffleFunction=[]; 函数shuffleFunction() { 而(items.length>0){ 设rnd=Math.floor(Math.random()*items.length); shuffleFunction.push(项目[rnd]); items.splice(rnd,1);//从旧数组中删除位置 shuffle.push(document.getElementById(“shuffle”).value); } } 日志(“无序项:+项”); 洗牌
一旦用户输入了他们的单词,用户就可以按随机键随机显示数组的结果。

var项目=[];
函数myFunction()
{
var add=document.getElementById(“收集器”);
items.push(document.getElementById(“输入”).value);
add.innerHTML=items.join(“
”); } 函数shuffleFunction() { const add=document.getElementById(“收集器”); add.innerHTML=items.shuffle().join(“
”); } Array.prototype.shuffle=函数(){ const resultar=[] const realArr=JSON.parse(JSON.stringify(this)); while(realArr.length>0){ resultar.push(realArr.splice(Math.floor(Math.random()*realArr.length),1)); } 返回结果器; }

洗牌

问题的可能重复之处在于您已使用
常量初始化了数组-无法修改。更改为
var
let
。谢谢,我以前尝试过删除Const,但由于它没有改变任何内容,所以我将其更改了回去。不过在这种情况下使用let会更明智。@Ashay Mandwarya,谢谢你的回复。这是一个类似的问题,但在从用户而不是预设数组中获取输入后,我很难使数字随机化。数组和名为
shuffleFunction
的函数不能同时具有。您的意思是
var shuffle=[]
(因为
shuffle
是另一个您使用但不初始化的变量)?我认为我更直接的问题之一是如何在我的HTML页面上显示洗牌结果。比如如何获取(document.getElementById(“shuffle”).innerHTML=???)。以何种方式将其显示在屏幕上。我的意思是列表或类似的东西?是的,当他们点击“洗牌”按钮时,列表将洗牌他们的输入。我知道我的代码当前有错误,但我正在学习正确使用函数。谢谢回复。@haberjin我已经编辑了代码。只需添加项目,然后单击“随机播放”进行测试。如果你感到满意,就接受这个答案。这太棒了,比我想象的还要多。正是我需要的。我得比较一下,做笔记。非常感谢。