Math.random()生成一个随机数

时间:2019-03-06 00:00:41

标签: javascript jquery random

我正在创建一个键盘,该键盘可在按键时创建div。 (我已经弄清楚了键盘部分)我希望每个div随机放置,同时仍按字母聚类。我正在尝试通过在现有的“ .aclass”顶部和左侧样式中添加1到20之间的随机整数来实现此目的。

var min=1; 
var max=20;  
var random = Math.floor(Math.random() * (+max - +min) + +min);
var newtopa= $('.a').position().top + random;
var newlefta = $('.a').position().left + random;

function createElement(k) {  
  if (k == "a" || k == "A") { 
    $(".aclass").append('<div class="a" style="top:'+newtopa+'px;left:'+newlefta+'px;"></div>');
  }

但是,我的Math.random行仅返回一个随机数。每当我按“ a”键并创建一个div时,它就会放在同一位置,而不是随机放置。

2 个答案:

答案 0 :(得分:2)

您是在createElement函数之外声明随机数,因此只能创建一个,然后在每次调用createElement时使用它。

var min=1; 
var max=20; 

function createElement(k) {  

    var random = Math.floor(Math.random() * (+max - +min) + +min);
    var newtopa= $('.a').position().top + random;
    var newlefta = $('.a').position().left + random;
    if (k == "a" || k == "A") { 
        $(".aclass").append('<div class="a" style="top:'+newtopa+'px;left:'+newlefta+'px;"></div>');
    }

此外,您也没有指定newtopa和newlefta应该提供的内容,但是目前,您只能获得该类中第一个元素的位置,这似乎不太可能是您想要的。

答案 1 :(得分:2)

这是因为这样做只需要调用Math.random()函数一次,而每次按下该键都需要生成一个随机数。

您可以通过确保每次运行Math.random()都执行createElement()来尝试执行此操作。