如何关闭javascript中自定义的提示框
How to close custom made prompt box in javascript?
我正在尝试用javascript制作一个自定义提示框。然而,我只是不知道如何再次关闭它。"取消"按钮确实有效(提示框消失),但当您单击"确定"按钮时,该框不会消失。
由于我的代码基于此页面上的代码:https://www.developphp.com/video/JavaScript/Custom-Prompt-Box-Programming-Tutorial
但现在我看到,如果我复制页面上的示例,"确定"按钮也不起作用。有人能告诉我怎么了吗?
这是我链接到的网站上的例子,它不起作用:
<!DOCTYPE html>
<html>
<head>
<style>
#dialogoverlay{
display: none;
opacity: .8;
position: fixed;
top: 0px;
left: 0px;
background: #FFF;
width: 100%;
z-index: 10;
}
#dialogbox{
display: none;
position: fixed;
background: #000;
border-radius:7px;
width:550px;
z-index: 10;
}
#dialogbox > div{ background:#FFF; margin:8px; }
#dialogbox > div > #dialogboxhead{ background: #666; font-size:19px; padding:10px; color:#CCC; }
#dialogbox > div > #dialogboxbody{ background:#333; padding:20px; color:#FFF; }
#dialogbox > div > #dialogboxfoot{ background: #666; padding:10px; text-align:right; }
</style>
<script>
function changeText(val){
document.getElementById('status').innerHTML = val;
}
function doStuff(val){
document.body.style.background = val;
}
function CustomAlert(){
this.render = function(dialog){
var winW = window.innerWidth;
var winH = window.innerHeight;
var dialogoverlay = document.getElementById('dialogoverlay');
var dialogbox = document.getElementById('dialogbox');
dialogoverlay.style.display = "block";
dialogoverlay.style.height = winH+"px";
dialogbox.style.left = (winW/2) - (550 * .5)+"px";
dialogbox.style.top = "100px";
dialogbox.style.display = "block";
document.getElementById('dialogboxhead').innerHTML = "Acknowledge This Message";
document.getElementById('dialogboxbody').innerHTML = dialog;
document.getElementById('dialogboxfoot').innerHTML = '<button onclick="Alert.ok()">OK</button>';
}
this.ok = function(){
document.getElementById('dialogbox').style.display = "none";
document.getElementById('dialogoverlay').style.display = "none";
}
}
var Alert = new CustomAlert();
function CustomConfirm(){
this.render = function(dialog,op,id){
var winW = window.innerWidth;
var winH = window.innerHeight;
var dialogoverlay = document.getElementById('dialogoverlay');
var dialogbox = document.getElementById('dialogbox');
dialogoverlay.style.display = "block";
dialogoverlay.style.height = winH+"px";
dialogbox.style.left = (winW/2) - (550 * .5)+"px";
dialogbox.style.top = "100px";
dialogbox.style.display = "block";
document.getElementById('dialogboxhead').innerHTML = "Confirm that action";
document.getElementById('dialogboxbody').innerHTML = dialog;
document.getElementById('dialogboxfoot').innerHTML = '<button onclick="Confirm.yes('''+op+''','''+id+''')">Yes</button> <button onclick="Confirm.no()">No</button>';
}
this.no = function(){
document.getElementById('dialogbox').style.display = "none";
document.getElementById('dialogoverlay').style.display = "none";
}
this.yes = function(op,id){
if(op == "delete_post"){
deletePost(id);
}
document.getElementById('dialogbox').style.display = "none";
document.getElementById('dialogoverlay').style.display = "none";
}
}
var Confirm = new CustomConfirm();
function CustomPrompt(){
this.render = function(dialog,func){
var winW = window.innerWidth;
var winH = window.innerHeight;
var dialogoverlay = document.getElementById('dialogoverlay');
var dialogbox = document.getElementById('dialogbox');
dialogoverlay.style.display = "block";
dialogoverlay.style.height = winH+"px";
dialogbox.style.left = (winW/2) - (550 * .5)+"px";
dialogbox.style.top = "100px";
dialogbox.style.display = "block";
document.getElementById('dialogboxhead').innerHTML = "A value is required";
document.getElementById('dialogboxbody').innerHTML = dialog;
document.getElementById('dialogboxbody').innerHTML += '<br><input id="prompt_value1">';
document.getElementById('dialogboxfoot').innerHTML = '<button onclick="Prompt.ok('''+func+''')">OK</button> <button onclick="Prompt.cancel()">Cancel</button>';
}
this.cancel = function(){
document.getElementById('dialogbox').style.display = "none";
document.getElementById('dialogoverlay').style.display = "none";
}
this.ok = function(func){
var prompt_value1 = document.getElementById('prompt_value1').value;
window[func](prompt_value1);
document.getElementById('dialogbox').style.display = "none";
document.getElementById('dialogoverlay').style.display = "none";
}
}
var Prompt = new CustomPrompt();
</script>
</head>
<body>
<div id="dialogoverlay"></div>
<div id="dialogbox">
<div>
<div id="dialogboxhead"></div>
<div id="dialogboxbody"></div>
<div id="dialogboxfoot"></div>
</div>
</div>
<h1>My web document content ...</h1>
<h2>My web document content ...</h2>
<button onclick="alert('You look very pretty today.')">Default Alert</button>
<button onclick="Alert.render('You look very pretty today.')">Custom Alert</button>
<button onclick="Prompt.render('And you also smell very nice.')">Custom Alert 2</button>
<h3>My web document content ...</h3>
</body>
</html>
您缺少ok
按钮单击的第二个参数,该参数允许您在单击ok后调用函数:
<button onclick="Prompt.render('And you also smell very nice.', 'doStuff')">Custom Alert 2</button>
这将使用提示符中的值调用doStuff
。
有一种可能性是检查代码中用于元素的id,如果存在重复的id,javaScript将无法正常工作。
代码中的此语句,
document.getElementById('dialogbox').style.display = "none";
正在使用id为"dialogbox"的元素,所以如果您的页面中有另一个元素具有相同的id,您的代码将无法正常工作。如果共享了有问题的代码,则可以提供更多帮助。
相关文章:
- MVC中关于表的自定义工具提示-每行显示数据
- 如何关闭javascript中自定义的提示框
- 是否可以替换或自定义getUserMedia提示
- 图表.js - 具有多个值的自定义工具提示
- 如何自定义数据::confirm弹出窗口以提示输入,该输入将附加到请求参数中
- 用于动态引导工具提示的自定义KnockoutJS绑定处理程序
- CodeMirror自定义提示列表工作不正常
- jquery UI工具提示的自定义背景图像
- AngularJS中的自定义工具提示
- FancyBox和自定义工具提示一起使用不起作用
- 如何在堆栈中创建具有不同颜色和自定义工具提示的堆积柱形图
- KendoUI堆叠条形图自定义工具提示
- 自定义/样式提示窗口
- 将图表工具提示自定义为标签,其中线条指向饼图段
- JavaScript上的自定义提示点
- 如何将自定义工具提示添加到 jqxwidget 部分饼图系列
- UIB 工具提示自定义触发器不起作用
- 酒窝系列工具提示自定义
- 共享点 2013 中的工具提示自定义
- 高图工具提示自定义