【问题标题】:Math.random() generating a single random numberMath.random() 生成单个随机数
【发布时间】:2019-07-27 13:15:19
【问题描述】:

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

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


    【解决方案1】:

    您在 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()函数,而你每次按键都需要生成一个随机数。

      您可以尝试这样做,方法是确保每次运行 createElement() 时都执行 Math.random()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-22
        • 1970-01-01
        • 2016-11-08
        • 2011-07-13
        • 2014-04-30
        • 2015-10-16
        • 2016-07-31
        • 2023-01-03
        相关资源
        最近更新 更多