2

请有人帮忙。我正在尝试在 javascript 中创建一个基本按钮,当单击该按钮时,它会从我的数组中随机选择一个值并将其显示在屏幕上,每次单击该按钮时,它都应该从数组中选择一个新项目。我知道如何编写数组

var myarray = new Array("item1", "item2", "item3");

我只是不知道如何做按钮部分。任何帮助都会很棒。我知道在 jQuery 中执行此操作可能更容易,但我真的很想在处理 jQuery 之前先了解一下 javascript(请温柔,我是新手,哈哈)

4

5 回答 5

6

您可以在按钮单击时调用一个函数来打印这样的值

<input type="button" id="btnSearch" value="Search" onclick="GetValue();" />
<p id="message" ></p>

JS

function GetValue()
{
    var myarray= new Array("item1","item2","item3");
    var random = myarray[Math.floor(Math.random() * myarray.length)];
    //alert(random);
    document.getElementById("message").innerHTML=random;
}

JS 小提琴演示

于 2013-05-25T21:13:29.417 回答
0

这是一个例子:

http://jsfiddle.net/kUgHg/2/

步骤是:

  1. 创建一个按钮元素并给它一个 ID:

    <button id="button1">Show random item</button>
    
  2. 获取脚本中按钮的引用:

    document.getElementById("button1");
    
  3. 根据数组长度计算数组中的随机索引:

    Math.floor(Math.random() * array.length)
    
  4. 向您的按钮添加一个click事件处理程序,该处理程序在步骤 3 中调用随机计算并以您想要的方式显示它:

    button.onclick = function() { … }
    

一体:

var button = document.getElementById("button1");
var myarray = ["a", "b", "c", "d"];

button.onclick = function() {
    alert(myarray[Math.floor(Math.random() * myarray.length)]);
};
于 2013-05-25T21:15:37.840 回答
0

使用 javascript 的 Random 函数在数组的上限和下限之间生成一个随机数。然后使用

myarray[Math.round(Math.random() * (myarray.length - 1))]

访问数组中的随机值。

您可以使用链接查看热门以生成介于最小和最大数字之间的随机数。(对于您的情况,最小值始终为 0)。

于 2013-05-25T21:09:07.517 回答
0

试试这个: HTML:

<input type="button" click="randomize()" value="Click me" />

JS:

function randomize(){
  var myarray = new Array("item1", "item2", "item3");
  var randomId =  Math.floor((Math.random()*myarray.length));
  var randomItem = myarray[randomid];

  alert(randomItem);
}
于 2013-05-25T21:13:53.723 回答
0

http://jsfiddle.net/McKxp/

JS:

var arr = ["foo","bar","baz"];

function getItem(){
    document.getElementById("something").innerHTML = arr[Math.floor(Math.random() * arr.length)];
}

HTML

<div id="something"></div>
<input type="button" onclick="getItem()" value="Click me"/>
于 2013-05-25T21:14:47.303 回答