JavaScript单例模式实现自定义弹框
本文实例为大家分享了JavaScript单例模式实现自定义弹框的具体代码,供大家参考,具体内容如下
功能
- 自定义弹框标题
- 自定义弹框内容
- 自定义弹框确认和关闭时的回调函数
const Dialog = (function () { class Dialog {constructor () {this.ele = document.createElement('div')this.ele.className = 'dialog'document.body.appendChild(this.ele)this.callback = nullthis.setEvent()} setContent ({ text, topicText, confirmText, cancelText } = options) {this.ele.innerHTML = nullconst top = document.createElement('div')top.className = 'top'const topic = document.createElement('span')topic.className = 'topic'topic.innerHTML = topicTextconst close = document.createElement('span')close.className = 'close'close.innerHTML = '×'top.appendChild(topic)top.appendChild(close)const middle = document.createElement('div')middle.className = 'middle'const content = document.createElement('div')content.className = 'content'content.innerHTML = textmiddle.appendChild(content)const bottom = document.createElement('div')bottom.className = 'bottom'const confirm = document.createElement('button')confirm.className = 'confirm'confirm.innerHTML = confirmTextconst cancel = document.createElement('button')cancel.className = 'cancel'cancel.innerHTML = cancelTextbottom.appendChild(confirm)bottom.appendChild(cancel)const wrap = document.createElement('div')this.ele.appendChild(top)this.ele.appendChild(middle)this.ele.appendChild(bottom)this.ele.style.display = 'block'} setEvent () {this.ele.addEventListener('click', e => {e = e || window.eventconst target = e.target || e.srcElementif (target.className === 'close') {this.ele.style.display = 'none'console.log('close')}if (target.className === 'confirm') {this.ele.style.display = 'none'this.callback(true)}if (target.className === 'cancel') {this.ele.style.display = 'none'this.callback(false)}})} } let instance = null return function (options, cb) {if (!instance) instance = new Dialog()instance.setContent(options)instance.callback = cb || function () {}return instance } })() const dialog = new Dialog({ text: '提示文字', topicText: '标题', confirmText: '确定', cancelText: '取消' }, res => { console.log(res) })
效果图
文章图片
【JavaScript单例模式实现自定义弹框】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 事件代理
- 数组常用方法一
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- 设计模式-代理模式-Proxy
- 【译】Rails|【译】Rails 5.0正式发布(Action Cable,API模式等)
- java静态代理模式
- VueX(Vuex|VueX(Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式)
- Kotlin基础(10)-代理模式在kotlin中的使用
- 长谈的确是这个时代需要的一种模式
- JavaScript|vue 基于axios封装request接口请求——request.js文件