我正在创建一个键盘,该键盘可在按键时创建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时,它就会放在同一位置,而不是随机放置。
答案 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()
来尝试执行此操作。