要求: 点击按钮,随机生成一个20px-100px宽度正方形,随机颜色,随机位置,不能出可视区域外

思路:(1)创建按钮,为按钮添加事件侦听

    (2)触发事件,创建一个元素

    (3)设置元素样式,包括大小,位置,颜色

基础HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button>添加</button>
<script> </script>
</body>
</html>

JS代码:

        init();
function init() {
var bn = document.getElementById("bn"); //通过id获取按钮bn
bn.addEventListener("click",clickHandler); //为按钮添加点击事件
}
function clickHandler(e) {
var wid = document.documentElement.clientWidth; //获取视口宽度
var hei = document.documentElement.clientHeight; //获取视口高度
var div = document.createElement("div"); //创建一个div
//定义一个局部变量divWidth 存放当前创建的div的大小
var divWidth = Math.floor(Math.random() * 80 + 20);
//设置div的样式,包括 宽 高 定位 背景颜色
div.style.position = "absolute";
div.style.width=divWidth+"px";
div.style.height=divWidth+"px";
//div的位置应该是当前视口宽高减去创建div的宽高 然后取随机值,才能保证div不会超出视口
div.style.left = Math.floor(Math.random() * (wid - divWidth))+"px";
div.style.top = Math.floor(Math.random() * (hei - divWidth))+"px";
div.style.backgroundColor =randomColor();
//将元素添加到body中
document.body.appendChild(div);
}
//定义一个函数,执行返回一个代表颜色的字符串
function randomColor() {
return "#"+Math.floor(Math.random()*0x1000000).toString(16).padStart(6,"0");
}

效果展示:

看完上面的代码,你是不是觉得它看起来有一些 繁杂 也许我们可以将它 “美化” 一下,让代码看起来更漂亮,更加赏心悦目

我们可以将代码中的一些类似的部分摘取出来,用一个函数来完成这些内容,比如为元素添加style 样式

我们可以这么写

        // createNewElement 创建一个元素, 函数内有两个参数第一个参数是要创建的元素类型,第二个参数是样式
//通过Object.assign()方法将style内的属性添加给创建的元素的style上
//最后将处理好的元素返回
function createNewElement(elem,style){
var elem=document.createElement(elem);
Object.assign(elem.style,style);
return elem;
}

注: Object.assign(target, source_1, ···)

    用于将源对象的所有可枚举属性复制到目标对象中。

我们怎么使用这个函数呢

   var  elem(用于接收函数return的元素)=createNewElement("div(要创建的元素类型)",{

     属性:属性值;  //第二个参数为对象,将这个对象传入,并将对象的属性复制到元素的style属性上完成样式的添加.

     width:"100px",

     backgroundColor:"green"

  });

这个函数不仅可以用于这里,还可以用于创建其他元素

        init();
function init() {
var bn = document.getElementById("bn"); //通过id获取按钮bn
bn.addEventListener("click",clickHandler); //为按钮添加点击事件
}
function clickHandler(e) {
var wid = document.documentElement.clientWidth; //获取视口宽度
var hei = document.documentElement.clientHeight; //获取视口高度
//定义一个变量divWidth 存放当前创建的div的大小
var divWidth = Math.floor(Math.random() * 80 + 20);
var div=createNewElement("div",{
position : "absolute",
width:divWidth+"px",
height:divWidth+"px",
left: Math.floor(Math.random() * (wid - divWidth))+"px",
top:Math.floor(Math.random() * (hei - divWidth))+"px",
backgroundColor:randomColor()
})
document.body.appendChild(div);
}
// createNewElement 创建一个元素, 函数内有两个参数第一个参数是要创建的元素类型,第二个参数是样式
//通过Object.assign()方法将style内的属性添加给创建的元素的style上
//最后将处理好的元素返回
function createNewElement(elem,style){
var elem=document.createElement(elem);
Object.assign(elem.style,style);
return elem;
}
//定义一个函数,执行返回一个代表颜色的字符串
function randomColor() {
return "#"+Math.floor(Math.random()*0x1000000).toString(16).padStart(6,"0");
}

--

原生JS 实现点击按钮创建元素的更多相关文章

  1. 原生 js 实现点击按钮复制文本

    最近遇到一个需求,需要点击按钮,复制 <p> 标签中的文本到剪切板 之前做过复制输入框的内容,原以为差不多,结果发现根本行不通 尝试了各种办法,最后使了个障眼法,实现了下面的效果 一.原理 ...

  2. 初探原生js根据json数据动态创建table

    初探原生js根据json数据动态创建table 小生以实习生的职位进入了一家非纯软件的公司做asp.net开发,大半个月下来发现公司里居然没有前端工程师,这令我很诧异,跟着公司做项目,发现前端后台没有 ...

  3. js实现点击按钮时显示弹框,点击按钮及弹框以外的区域时隐藏弹框

    转自https://blog.csdn.net/yimawujiang/article/details/86496936 问题:js实现点击按钮时显示弹框,点击按钮及弹框以外的区域时隐藏弹框? 方案一 ...

  4. win32 htmlayout点击按钮创建新窗口,以及按钮图片样式

    最近在做一个C++ win32的桌面图形程序,我不是C++程序员,做这个只是因为最近没什么java的活. windows api,之前接触的时候,还是大学,那时用这个开发打飞机游戏纯粹是娱乐.现在基本 ...

  5. JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)

    JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性) 以下内容: 一.获取元素的属性 二.设置元素的属性 三.删除元素的属性 一.获取元素的属性 1-原生JS 获取属性 .ge ...

  6. 使用原生js 实现点击消失效果

    JQ版 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...

  7. js实现点击按钮传值

    js实现点击按钮传值 page1源码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...

  8. 原生JS实现点击一个按钮显示一个div,再点击按钮div隐藏,或点击除div外其它空白处div隐藏

    <!DOCTYPE html> <html style="font-size: 24px"> <head> <title>js点击按 ...

  9. js点击按钮为元素随机字体颜色和背景色

    文章地址 https://www.cnblogs.com/sandraryan/ 写两个button和一个div,点击按钮分别改变背景色和前景色(字体颜色).产生的是一个随机颜色. <!DOCT ...

随机推荐

  1. 轻松让HTML5可以显示桌面通知Notification非常实用

    使用Notification的流程 1.检查浏览器是否支持Notification2.检查浏览器的通知权限3.如果权限不够则申请获取权限4.创建消息通知5.展示消息通知 Notification AP ...

  2. BZOJ1854 连续攻击游戏 题解

    题目 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多 ...

  3. PE文件格式详解(五)

    0x00 前言 前一篇了解了区块虚拟地址和文件地址转换的相关知识,这一篇该把我们所学拿出来用用了.这篇我们将了解更为重要的一个知识点——输入表和输出表的知识. 0x01 输入表 首先我们有疑问.这个输 ...

  4. Java 项目创建 -- 统一结果处理、统一异常处理、统一日志处理

    一.IDEA 插件使用 1.说明 此处使用 SpringBoot 2.2.6 .JDK 1.8 .mysql 8.0.18 作为演示. 使用 IDEA 作为开发工具. 2.IDEA 插件 -- Lom ...

  5. AHP(使用于某项目设备重要度评估测试)

    用层次法和蒙特卡洛模型计算权重系数,然后建立判断矩阵进行随机一致性检验,最后求出重要度指数. string calculateStr = "1,2,3,2,1,|1,2,3,2,1,|1,2 ...

  6. 安装更强大更美观的zsh,配置oh my zsh及插件

    安装更强大更美观的zsh,配置oh my zsh及插件 #0x0 安装zsh #0x1 安装oh my zsh #0x2 配置zshrc #0x3 配置主题 #0x4 安装插件 #0x5 小结 #0x ...

  7. Set 和 Map

    1. 数组去重 <script type="text/javascript"> [...new Set(array)] </script> 2. 条件语句的 ...

  8. 微信小程序开发中遇到的几个小问题

    本地图片不显示,开发工具运行是没问题的,但真机调试却显示不了 item.img = '/goods/img/图片.png' <image src="{{item.img}}" ...

  9. web 部署专题(七):Ubuntu + Nginx + Flask + Gunicore环境搭建(服务器)

    现在我们手里有一个准备发布的项目,那么如何将他上传到你的服务器,并让外网访问呢? 安装: 安装Flask pip3 install flask 安装UWSGI pip3 install uwsgi 安 ...

  10. J.U.C体系进阶(二):juc-locks 锁框架

    Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-locks 锁框架 接口说明 Lock接口 类型 名称 void loc ...