JS_生成随机矩形位置/矩形大小_面向对象_原型+构造函数模式

使用面向对象的方法进行矩形的随机生成。使用了原型和构造函数模式

随机生成矩形。矩形的位置是随机的,矩形的长宽(100-200)也是随机的。

贴上代码:

html

 1 <div class="content" id="content">
 2         <div class="controls">
 3             <label for="rec_num">请输入您要自动生成的矩形数量:</label>
 4             <input type="text" id="rec_num" class="number">
 5             <br>
 6             <input type="button" id="makeRec" value="生成矩形" class="btn createBtn">
 7             <input type="button" id="clearRec" value="清除画布" class="btn clearBtn">
 8         </div>
 9         <div id="rec_place"></div>
10     </div>

js

<script>
window.onload=function(){
    document.getElementById("content").style.height = document.documentElement.clientHeight+"px";
    document.getElementById("rec_place").style.height = document.documentElement.clientHeight-85+"px";
    var makeRec = document.getElementById("makeRec");
    var clearRec = document.getElementById("clearRec");
    var rec_num = document.getElementById("rec_num");
    var rec_place = document.getElementById("rec_place");

    var arr = new Array();

    //点击生成按钮
    makeRec.onclick=function(){
        var num = rec_num.value;
        if(parseInt(num)!=num){
            alert("请输入整数!")
        }
        else if(parseInt(num)<=0){
            alert("请输入大于0的整数!")
        }
        else{
            for(var i=0;i<num;i++){
                var rec = new Rectangle(i,rec_place);
                rec.createRec();
                arr.push(rec);
            }
        }
    }

    //点击清除画布
    clearRec.onclick=function(){
        var num = rec_place.getElementsByTagName("div").length;
        for(var i=0;i<num;i++){
            arr[0].ruinRec();
            arr.shift();
        }
    }
}

//var colors = ["red","blue","green","yellow","black"];

function Rectangle(index,rec_place){
    this.index = index;
    this.rec_height = Math.floor(Math.random()*101+100);
    this.rec_width = Math.floor(Math.random()*101+100);

    //this.rec_color = colors[Math.floor(Math.random()*5)];
    this.rec_color = "rgb("+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+")";

    this.rec_left =    Math.floor(Math.random()*(rec_place.offsetWidth-this.rec_width-1)+2);
    this.rec_top = Math.floor(Math.random()*(rec_place.offsetHeight-this.rec_height)+87);
    this.myRec = null;

    //方法一,构造函数
    // this.createRec =function(){
    //     this.myRec = document.createElement("div");
    //     this.myRec.className = "mydiv";
    //     this.myRec.innerHTML = "我是矩形"+(this.index+1);

    //     this.myRec.style.height = this.rec_height+"px";
    //     this.myRec.style.width = this.rec_width+"px";
    //     this.myRec.style.border = "3px solid "+this.rec_color;
    //     this.myRec.style.left = this.rec_left+"px";
    //     this.myRec.style.top =this.rec_top+"px";

    //     rec_place.appendChild(this.myRec);
    // }

    // this.ruinRec = function(){
    //     rec_place.removeChild(this.myRec);
    //}

}

//原型+构造函数:让函数共用
Rectangle.prototype = {
    createRec:function(){
        this.myRec = document.createElement("div");
        this.myRec.className = "mydiv";
        this.myRec.innerHTML = "我是矩形"+(this.index+1);

        this.myRec.style.height = this.rec_height+"px";
        this.myRec.style.width = this.rec_width+"px";
        this.myRec.style.border = "3px solid "+this.rec_color;
        this.myRec.style.left = this.rec_left+"px";
        this.myRec.style.top =this.rec_top+"px";

        rec_place.appendChild(this.myRec);
    },
    ruinRec:function(){
        rec_place.removeChild(this.myRec);
    }
}
<script>

PS:效果出不来,我也不懂为什么T T

(感兴趣的粘贴一下代码自行运行看看吧)

请输入您要自动生成的矩形数量:

以上内容,如有错误请指出,不甚感激。

时间: 2024-12-17 00:11:27

JS_生成随机矩形位置/矩形大小_面向对象_原型+构造函数模式的相关文章

Java之旅_面向对象_包(Package)

http://www.runoob.com/java/java-package.html 包的作用: 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了树形目录的存储方式.同一包中类名是不同的,不同包中的类名是可以相同的. 当调用相同名字的类时,应该加上包名,包可以避免名字冲突. 3.包也有访问权限,拥有包访问权限的类才能访问. Java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类.接口.枚举.和注释等. pac

.net生成随机验证码图片

/// <summary> /// 自定义图片验证码函数 /// 该函数将生成一个图片验证码,并将生成的code存放于Session["VerifyCode"]变量内. /// </summary> /// <param name="codeLength">验证码长度</param> /// <param name="codeFontsize">字体大小</param> //

.net生成随机字符串

生成随机字符串的工具类: /// <summary> /// 随机字符串工具类 /// </summary> public class RandomTools { /// <summary> /// 随机系数 /// </summary> public static int _RandIndex = 0; #region 获取某个区间的一个随机数 /// <summary> /// 获取某个区间的一个随机数 /// </summary>

java生成随机验证图片的实现

package com.fxr.生成随机图片; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; public class M

pillow实例 | 生成随机验证码

1 PIL(Python Image Library) PIL是Python进行基本图片处理的package,囊括了诸如图片的剪裁.缩放.写入文字等功能.现在,我便以生成随机验证码为例,讲述PIL的基本用法. PIL库似乎已经被人抛弃,就为更新,上次使用时竟然不能用show()直接将图片,在系统默认的图片管理器中打开.好在pillow,一个PIL的方言,将PIL继续维护了下去. 生成验证码一般需要对写入的文字进行旋转.扭曲.变色等一系列操作,才能避免计算机算法的识别. 因此定义一个生成验证码的类

Android生成随机验证码技术

在Android客户端应用开发中,往往需要短信验证码或者随机验证码来限制用户的操作或者认证.短信验证码是为了对用户进行认证,主要通过Http协议等通信协议实现;随机验证码很大程度是为限制或者提示用户相关操作.随机验证码的验证主要有两种方式:请求服务器验证,本地验证.比如,在用户向服务器发送登录请求,我们通过随机验证码(本地验证即可)限制用户随意按请求按钮,演示如下: 源码实战 (1)src/.../createCode.java 功能:使用Random.Canvas.Paint及其相关方法创建包

用C#生成随机中文汉字验证码的基本原理

前几天去申请免费QQ号码,突然发现申请表单中的验证码内容换成了中文,这叫真叫我大跌眼镜感到好笑,Moper上的猫儿们都大骂腾讯采用中文验证码.^_^  我不得不佩服腾讯为了防止目前网络上横行的QQ号码自动注册机而采取中文验证码的手段.仔细想了想感觉用程序生成随机的中文验证码并不是很难,下面就来介绍一下使用C#生成随机的中文汉字的原理. 1.汉字编码原理  到底怎么办到随机生成汉字的呢?汉字从哪里来的呢?是不是有个后台数据表,其中存放了所需要的所有汉字,使用程序随机取出几个汉字组合就行了呢?使用后

学习python:实例2.用PIL生成随机验证码

效果: 代码: # 生成随机验证码图片 import string from random import randint, sample from PIL import Image, ImageDraw, ImageFont, ImageFilter # Image 负责处理图片 # ImageDraw 画笔 # ImageFont 文字 # ImageFileter 滤镜 # 定义变量 img_size = (150,50)        # 定义画布大小 img_rgb = (255,255

HTML5+CSS3鼠标移入移出图片生成随机动画

今天分享使用html+css3+少量jquery实现鼠标移入移出图片生成随机动画,我们先看最终效果图(截图为静态效果,做出来可是动态的哟) 左右旋转 上下移动 缩放 由于时间关系我就不一步步解析各段代码所代表含义,我这里就给出一些思路及关键代码: 1.首先使用ul li展现4张图片 本示例中不仅使用了图片,在图片表面还放置了一段“WEB”字样文字,用于与图片实现隐藏或显示效果,故html中每张图片上方加入: <div class="mytext">WEB</div&g