JavaScript singleton mode to implement custom pop-up box

JavaScript singleton mode to implement custom pop-up box

This article shares the specific code of JavaScript singleton mode to implement custom pop-up boxes for your reference. The specific content is as follows

Function

  • Customize pop-up title
  • Customize pop-up content
  • Customize the callback function for confirming and closing the pop-up window

Complete code

const Dialog = (function () {
 class Dialog {
   constructor () {
     this.ele = document.createElement('div')
     this.ele.className = 'dialog'
     document.body.appendChild(this.ele)
     this.callback = null
     this.setEvent()
   }
 
   setContent ({ text, topicText, confirmText, cancelText } = options) {
     this.ele.innerHTML = null
     const top = document.createElement('div')
     top.className = 'top'
     const topic = document.createElement('span')
     topic.className = 'topic'
     topic.innerHTML = topicText
     const 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 = text
     middle.appendChild(content)
     const bottom = document.createElement('div')
     bottom.className = 'bottom'
     const confirm = document.createElement('button')
     confirm.className = 'confirm'
     confirm.innerHTML = confirmText
     const cancel = document.createElement('button')
     cancel.className = 'cancel'
     cancel.innerHTML = cancelText
     bottom.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.event
       const target = e.target || e.srcElement
       if (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: 'prompt text',
 topicText: 'Title',
 confirmText: 'Confirm',
 cancelText: 'Cancel'
 }, res => { console.log(res) })

Rendering

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • js+html5 realizes the effect of semi-transparent mask layer pop-up box
  • Toast usage in vue.js and example code using toast pop-up box
  • Encapsulation of js custom pop-up box plug-in
  • Easily implement js pop-up box display options
  • Vue.js implements pop-up window only once
  • js to achieve the effect of up, down, left, and right pop-up boxes
  • Implement the delivery address pop-up box selection based on layer.js and return the corresponding address information
  • JavaScript to achieve a pop-up box that cannot be closed
  • Example code of Bootstrap and Angularjs with homemade pop-up box
  • js rewrites the alert event (avoiding the URL appearing in the alert pop-up box title)

<<:  Sharing experience on MySQL slave maintenance

>>:  Proxy_pass method in multiple if in nginx location

Recommend

Introduction to setting up Tomcat to start automatically on Linux system

1. Enter the /etc/init.d directory: cd /etc/init....

Nginx rtmp module compilation arm version problem

Table of contents 1. Preparation: 2. Source code ...

Detailed explanation of explain type in MySQL

Introduction: In many cases, many people think th...

Vue.js framework implements shopping cart function

This article shares the specific code of Vue.js f...

Detailed explanation of Linux environment variable configuration strategy

When customizing the installation of software, yo...

Detailed explanation of formatting numbers in MySQL

Recently, due to work needs, I need to format num...

How to create users and manage permissions in MySQL

1. How to create a user and password 1. Enter the...

Detailed explanation of Vue3's sandbox mechanism

Table of contents Preface Browser compiled versio...

How to use LibreOffice to convert document formats under CentOS

Project requirements require some preprocessing o...

Why MySQL does not recommend using subqueries and joins

To do a paginated query: 1. For MySQL, it is not ...

A problem with MySQL 5.5 deployment

MySQL deployment Currently, the company deploys M...

Implementing a simple timer in JavaScript

This article example shares the specific code of ...

Implementation steps for building multi-page programs using Webpack

It is very common to use webpack to build single-...

CSS style reset and clear (to make different browsers display the same effect)

In order to make the page display consistent betwe...