随机清空Javascript数组

随机清空Javascript数组,javascript,arrays,Javascript,Arrays,我试图用一系列按钮onclick事件清空一个数组 如何将新拼接的阵列访问到 在其上运行相同的函数,直到不再有字母 这是我正在使用的代码: PS,我感谢社区、评论、说明和帮助,但是如果你想告诉我代码有多不合适,请考虑重写它,以便每个人都能以正确的方式学习 <body> <button onClick="myFunction()">CLick</button> </br> <div id="myDiv"></div> <

我试图用一系列按钮onclick事件清空一个数组

如何将新拼接的阵列访问到 在其上运行相同的函数,直到不再有字母

这是我正在使用的代码:

PS,我感谢社区、评论、说明和帮助,但是如果你想告诉我代码有多不合适,请考虑重写它,以便每个人都能以正确的方式学习

<body>

<button onClick="myFunction()">CLick</button>

</br>
<div id="myDiv"></div>
<div id="myDiv1"></div>

<button onClick="myFunction()">CLick</button>

</br>

<div id="myDiv2"></div>
<div id="myDiv3"></div>


<script>
function myFunction() {

    Array.prototype.randsplice = function () {

        var ri = Math.floor(Math.random() * this.length);
        var rs = this.splice(ri, 1);
        return rs;
    };

    var my_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
    var result = my_array.randsplice();

    document.getElementById('myDiv').innerHTML=result;
    document.getElementById('myDiv1').innerHTML=my_array;

    }


</script>
</body>
好的,多亏了Travis J和他工作中的一些附加组件,更新了代码。 所以我想从技术上来说,这条线已经结束了

但是。。。有没有更好的方法来执行以下操作

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!-- type button as button so that it does not implicitly recieve submit as its type -->
<button id="myButton1" type="button">Click</button>

<br>
<div id="myDiv1"></div>
<div id="myDiv2"></div>

<!-- type button as button so that it does not implicitly recieve submit as its type -->
<button id="myButton2" type="button">Click</button>

<br>
<div id="myDiv3"></div>
<div id="myDiv4"></div>

<!-- type button as button so that it does not implicitly recieve submit as its type -->
<button id="myButton3" type="button">Click</button>

<br>
<div id="myDiv5"></div>
<div id="myDiv6"></div>

<!-- type button as button so that it does not implicitly recieve submit as its type -->
<button id="myButton4" type="button">Click</button>

<br>
<div id="myDiv7"></div>
<div id="myDiv8"></div>

<!-- type button as button so that it does not implicitly recieve submit as its type -->
<button id="myButton5" type="button">Click</button>

<br>
<div id="myDiv9"></div>
<div id="myDiv10"></div>

<!-- type button as button so that it does not implicitly recieve submit as its type -->
<button id="myButton6" type="button">Click</button>

<br>
<div id="myDiv11"></div>
<div id="myDiv12"></div>

<!-- type button as button so that it does not implicitly recieve submit as its type -->
<button id="myButton7" type="button">Click</button>

<br>
<div id="myDiv13"></div>
<div id="myDiv14"></div>



<script>
//Nothing wrong here, so lets just do it first
Array.prototype.randsplice = function () {
    var ri = Math.floor(Math.random() * this.length);
    return this.splice(ri, 1);//removed extra variable
};

//Use an eventlistener to wait for the DOM to load
//so that we can depend on DOM elements being available
window.addEventListener("load",function(){

    //locate the button element and save it in a variable
    var button1 = document.getElementById("myButton1");
    var button2 = document.getElementById("myButton2");
    var button3 = document.getElementById("myButton3");
    var button4 = document.getElementById("myButton4");
    var button5 = document.getElementById("myButton5");
    var button6 = document.getElementById("myButton6");
    var button7 = document.getElementById("myButton7");

    //do the same for the divs
    var myDiv1 = document.getElementById("myDiv1");
    var myDiv2 = document.getElementById("myDiv2");

    //do the same for the divs
    var myDiv3 = document.getElementById("myDiv3");
    var myDiv4 = document.getElementById("myDiv4");

    //do the same for the divs
    var myDiv5 = document.getElementById("myDiv5");
    var myDiv6 = document.getElementById("myDiv6");

    //do the same for the divs
    var myDiv7 = document.getElementById("myDiv7");
    var myDiv8 = document.getElementById("myDiv8");

    //do the same for the divs
    var myDiv9 = document.getElementById("myDiv9");
    var myDiv10 = document.getElementById("myDiv10");

    //do the same for the divs
    var myDiv11 = document.getElementById("myDiv11");
    var myDiv12 = document.getElementById("myDiv12");

    //do the same for the divs
    var myDiv13 = document.getElementById("myDiv13");
    var myDiv14 = document.getElementById("myDiv14");


    //setup the array we will use for this example
    var my_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];

    //show the original array values
    myDiv2.innerHTML = my_array;

        //attach a click event handler to our button
        button1.onclick = function() {
            //modify my_array and display result
            myDiv1.innerHTML = my_array.randsplice();
            myDiv2.innerHTML = my_array;

            //attach a click event handler to our button
            button2.onclick = function () {
                //modify my_array and display result
                myDiv3.innerHTML = my_array.randsplice();
                myDiv4.innerHTML = my_array;

                //attach a click event handler to our button
                button3.onclick = function () {
                    //modify my_array and display result
                    myDiv5.innerHTML = my_array.randsplice();
                    myDiv6.innerHTML = my_array;

                    //attach a click event handler to our button
                    button4.onclick = function () {
                        //modify my_array and display result
                        myDiv7.innerHTML = my_array.randsplice();
                        myDiv8.innerHTML = my_array;

                        //attach a click event handler to our button
                        button5.onclick = function () {
                            //modify my_array and display result
                            myDiv9.innerHTML = my_array.randsplice();
                            myDiv10.innerHTML = my_array;

                            //attach a click event handler to our button
                            button6.onclick = function () {
                                //modify my_array and display result
                                myDiv11.innerHTML = my_array.randsplice();
                                myDiv12.innerHTML = my_array;

                                //attach a click event handler to our button
                                button7.onclick = function () {
                                    //modify my_array and display result
                                    myDiv13.innerHTML = my_array.randsplice();
                                    myDiv14.innerHTML = my_array;

                                //check if the array is empty and if so, perhaps display a                  message
                              //  if (my_array.length == 0) alert("Empty!");
                            };
                        }}}}}}});
</script>
</body>
</html>

您应该在myFunction函数的上下文之外定义数组,否则您将在每个函数调用中定义一个新数组

var my_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];

function myFunction() {
    if (my_array.length === 0) return;
    // ...

您应该在myFunction函数的上下文之外定义数组,否则您将在每个函数调用中定义一个新数组

var my_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];

function myFunction() {
    if (my_array.length === 0) return;
    // ...

让我们看看这是否是您想要的:

function myFunction() {

    Array.prototype.randsplice = function () {

        var ri = Math.floor(Math.random() * this.length);
        var rs = this.splice(ri, 1);
        return rs;
    };

    var my_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
    var result;

    while(my_array.length > 0) {
        result = my_array.randsplice();
        document.getElementById('myDiv').innerHTML+=result;
    }

}

让我们看看这是否是您想要的:

function myFunction() {

    Array.prototype.randsplice = function () {

        var ri = Math.floor(Math.random() * this.length);
        var rs = this.splice(ri, 1);
        return rs;
    };

    var my_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
    var result;

    while(my_array.length > 0) {
        result = my_array.randsplice();
        document.getElementById('myDiv').innerHTML+=result;
    }

}
嗯,这里我建议进行一些重构。此外,您的确切演示不起作用的原因是每次调用函数时它都会重置my_数组的值,因此需要重新处理

//这里没什么问题,让我们先做吧 Array.prototype.randplice=函数{ var ri=Math.floorMath.random*this.length; 返回this.striceri,1;//删除的额外变量 }; //使用eventlistener等待DOM加载 //因此,我们可以依赖可用的DOM元素 window.addEventListenerload,函数{ //找到按钮元素并将其保存在变量中 var button=document.getElementByIdmyButton; //对div也一样 var myDiv=document.getElementByIdmyDiv; var myDiv1=document.getElementByIdmyDiv1; //设置我们将用于此示例的阵列 var my_数组=['a','b','c','d','e','f','g']; //显示原始数组值 myDiv1.innerHTML=我的数组; //将单击事件处理程序附加到按钮 button.onclick=函数{ //修改我的_数组并显示结果 myDiv.innerHTML=my_array.randplice; myDiv1.innerHTML=我的数组; //检查数组是否为空,如果为空,可能会显示一条消息 如果my_array.length==0 alertEmpty!; }; }; 点击 嗯,这里我建议进行一些重构。此外,您的确切演示不起作用的原因是每次调用函数时它都会重置my_数组的值,因此需要重新处理

//这里没什么问题,让我们先做吧 Array.prototype.randplice=函数{ var ri=Math.floorMath.random*this.length; 返回this.striceri,1;//删除的额外变量 }; //使用eventlistener等待DOM加载 //因此,我们可以依赖可用的DOM元素 window.addEventListenerload,函数{ //找到按钮元素并将其保存在变量中 var button=document.getElementByIdmyButton; //对div也一样 var myDiv=document.getElementByIdmyDiv; var myDiv1=document.getElementByIdmyDiv1; //设置我们将用于此示例的阵列 var my_数组=['a','b','c','d','e','f','g']; //显示原始数组值 myDiv1.innerHTML=我的数组; //将单击事件处理程序附加到按钮 button.onclick=函数{ //修改我的_数组并显示结果 myDiv.innerHTML=my_array.randplice; myDiv1.innerHTML=我的数组; //检查数组是否为空,如果为空,可能会显示一条消息 如果my_array.length==0 alertEmpty!; }; }; 点击
为了破解你想要的象形文字,我可以问一下:你是想洗牌我的_数组,你是想随机改变数组中的元素,比如a,b,c变成c,a,b?你想要一个array.empty方法,还是想知道如何反复调用randsplice直到数组为空,您可以使用while循环:whilemy_array.length>0{result=my_array.randplice;}我想重复随机调用randplice,直到数组为空。@ADASein yes,hieraglyph!我的问题是非常清楚我想做什么,却几乎不知道如何最好地去做和询问。耸耸肩,摇摇头。。。。我的困境也是如此……为了破解你想要的象形文字,我可以问一下:你是在尝试洗牌我的_数组,你是在尝试随机改变数组中的元素,例如a,b,c变成c,a,b?你想要一个array.empty方法,还是想知道如何反复调用randsplice,直到数组为空,您可以使用while循环:whilemy_array.length>0{result=my_array.randplice;}我想重复随机调用randplice,直到数组为空。@ADASein yes,hieraglyph!我的问题是非常清楚我想做什么,却几乎不知道如何最好地去做和询问。耸耸肩,摇摇头。。。。我的困境也是如此……我正在试着做7个按钮。单击每个按钮时,一个字母为ra
ndomly selected,从数组中切片,并放入按钮的相应div。基本上,单击的第一个按钮有一个包含7个字母的数组,第二个按钮有一个包含6个字母的数组,依此类推。顺便说一句,谢谢你的帮助Travis J肯定已经关闭了功能。但我需要将它扩展到7个按钮和14个div。这就是我正在尝试的。只是回答你的评论。我试着做7个按钮。单击每个按钮时,将随机选择一个字母,从数组中切片,并将其放入按钮的相应div中。基本上,单击的第一个按钮有一个包含7个字母的数组,第二个按钮将有一个包含6个字母的数组,依此类推。顺便说一句,谢谢你的帮助Travis J肯定已经关闭了功能。但我需要将它扩展到7个按钮和14个div。这就是我正在尝试的。只是回答你的意见。特拉维斯,谢谢你!这绝对是我正在寻找的功能。只有我在尝试创建7个按钮和14个div,就像你的1个按钮和2个div一样。特拉维斯,谢谢你!这绝对是我正在寻找的功能。只有我在尝试创建7个按钮和14个div,它们和你的1个按钮和2个div一样。