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

问题描述 投票:1回答:2

我正在创建一个键盘,可以在按键时创建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,它会被放置在同一个地方而不是随机。

javascript jquery random
2个回答
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应该提供什么,但是目前你只是获得该类的第一个元素的位置,这似乎不太可能是你想要的。


2
投票

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

您可以通过确保每次运行Math.random()时执行createElement()来尝试这样做。

© www.soinside.com 2019 - 2024. All rights reserved.