Javascript 如何洗牌用户添加的数组中的项目并显示结果?
这里是Javascript初学者, 我需要给最终用户一个选项来随机分配他们的库存。我创建了一个函数来存储用户的项目,但无法让第二个函数(shuffleFunction)用于随机化。我知道有很多例子,但我需要帮助了解我在第二个函数中具体做错了什么。控制台错误读取(UncaughtTypeError:shuffleFunction不是htmlButtoneElement.onclick上的函数) 这是为了学习Javascript 如何洗牌用户添加的数组中的项目并显示结果?,javascript,Javascript,这里是Javascript初学者, 我需要给最终用户一个选项来随机分配他们的库存。我创建了一个函数来存储用户的项目,但无法让第二个函数(shuffleFunction)用于随机化。我知道有很多例子,但我需要帮助了解我在第二个函数中具体做错了什么。控制台错误读取(UncaughtTypeError:shuffleFunction不是htmlButtoneElement.onclick上的函数) 这是为了学习 <script type="text/javascript">
<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我已经编辑了代码。只需添加项目,然后单击“随机播放”进行测试。如果你感到满意,就接受这个答案。这太棒了,比我想象的还要多。正是我需要的。我得比较一下,做笔记。非常感谢。