【发布时间】:2016-05-12 05:01:48
【问题描述】:
所以我在这里尝试做的是创建一个页面,每 2 秒生成一个新的随机颜色和大小框,当我单击它们时将其删除。问题是,第一个框的创建没有问题,但在那之后,我收到错误消息,即我的函数“makeDiv”不是每 2 秒定义一次。
我错过了什么吗?
setInterval('makeDiv', 2000);
(function makeDiv() {
var divsize = ((Math.random() * 100) + 50).toFixed();
var color = '#' + Math.round(0xffffff * Math.random()).toString(16);
$newdiv = $('<div/>').css({
'width': divsize + 'px',
'height': divsize + 'px',
'background-color': color
});
var posx = (Math.random() * ($(document).width() - divsize)).toFixed();
var posy = (Math.random() * ($(document).height() - divsize)).toFixed();
$newdiv.css({
'position': 'absolute',
'left': posx + 'px',
'top': posy + 'px',
'display': 'none'
}).appendTo('body').fadeIn(100)
$("div").click(function() {
$(this).remove();
});
})();
【问题讨论】:
-
将其移出自执行函数
-
setInterval在第一次调用后在窗口范围内执行函数;这就是为什么您需要将makeDiv移到 IIFE 之外的原因;
标签: javascript jquery object this setinterval