该类的想法是在屏幕上创建X个正方形,并随机更改其颜色。
这里是:
function Blocks() {
var Size = 0;
this.setSize = function(inputSize) {
Size = inputSize;
};
this.createEnvironment = function() {
var Block, prevBlock, i;
for (i = 0; i < Size; i++) {
Block = document.createElement('div');
Block.className = 'block';
Block.id = i;
prevBlock = document.getElementsByTagName('div')[i];
prevBlock.parentNode.insertBefore(Block, prevBlock);
}
};
this.randBlock = function() {
return document.getElementsByTagName('div')[Math.floor(Math.random() * Size)];
};
this.randColor = function() {
var Chars = '0123456789ABCDEF'.split('');
var randColor = '#';
for (var i = 0; i < 6; i++) {
randColor += Chars[Math.floor(Math.random() * Chars.length)];
}
return randColor;
};
this.goCrazy = function() {
var Block = this.randBlock();
Block.style.background = this.randColor();
var t = setTimeout('this.goCrazy()', 1000);
};
}
这是用法:
var object = new Blocks();
object.setSize(10);
object.createEnvironment();
object.goCrazy();
CSS代码:
.block为30x30像素,显示内嵌块。
在调用该类之前,有一个空白的div标签,供创建块的位置参考。
上面的所有代码仅显示一个彩色的块,而不是全部都被彩色,并且变化很快。
Chrome的警告:
Uncaught TypeError: Object [object DOMWindow] has no method 'goCrazy'
最佳答案
定时器功能(setTimeout
)在它们自己的范围内执行。将代码包装成一个闭包应该工作:
var t = setTimeout(function () { _self.goCrazy(); }, 1000);
看看:http://jsfiddle.net/TimWolla/BHeZR/演示。
关于javascript - Javascript面向对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8956228/