当前位置:首页 > JavaScript

js实现confirm

2026-01-30 12:49:09JavaScript

使用 window.confirm 实现基础确认框

window.confirm 是浏览器原生提供的对话框方法,接受一个字符串参数作为提示信息,返回布尔值(用户点击“确定”返回 true,点击“取消”返回 false)。

const isConfirmed = confirm('确定要删除此项吗?');
if (isConfirmed) {
  console.log('用户确认操作');
} else {
  console.log('用户取消操作');
}

自定义样式替代方案(使用模态框)

原生 confirm 无法修改样式,可通过 HTML/CSS 和 JavaScript 模拟自定义确认框:

js实现confirm

<div id="customConfirm" style="display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; padding: 20px; border: 1px solid #ccc; z-index: 1000;">
  <p id="confirmMessage">确定要执行此操作吗?</p>
  <button id="confirmYes">确定</button>
  <button id="confirmNo">取消</button>
</div>
function showCustomConfirm(message, callback) {
  const modal = document.getElementById('customConfirm');
  const msgElement = document.getElementById('confirmMessage');
  msgElement.textContent = message;
  modal.style.display = 'block';

  document.getElementById('confirmYes').onclick = function() {
    modal.style.display = 'none';
    callback(true);
  };

  document.getElementById('confirmNo').onclick = function() {
    modal.style.display = 'none';
    callback(false);
  };
}

// 调用示例
showCustomConfirm('自定义确认框示例', (result) => {
  console.log(result ? '用户确认' : '用户取消');
});

使用第三方库(如 SweetAlert2)

SweetAlert2 提供美观且功能丰富的弹窗,支持异步操作和自定义配置:

安装库:

js实现confirm

npm install sweetalert2

代码示例:

import Swal from 'sweetalert2';

Swal.fire({
  title: '确认操作',
  text: '确定要提交吗?',
  icon: 'question',
  showCancelButton: true,
  confirmButtonText: '确定',
  cancelButtonText: '取消'
}).then((result) => {
  if (result.isConfirmed) {
    console.log('用户确认');
  }
});

异步场景处理

若需在异步操作前确认,可通过 Promise 或 async/await 实现:

async function deleteItem() {
  const isConfirmed = await new Promise((resolve) => {
    showCustomConfirm('删除后无法恢复', resolve);
  });
  if (isConfirmed) {
    await fetch('/api/delete', { method: 'DELETE' });
  }
}

注意事项

  • 原生 confirm 会阻塞线程,直到用户响应,可能影响用户体验。
  • 自定义模态框需处理无障碍访问(ARIA 属性)和遮罩层。
  • 第三方库如 SweetAlert2 适合复杂场景,但会增加项目体积。

标签: jsconfirm
分享给朋友:

相关文章

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…