2015-03-22 2 views
0

Я пытаюсь создать пользовательский поле запроса в javascript. Однако я просто не могу понять, как закрыть его снова. Кнопка отмены работает (окно подсказки исчезает), но когда вы нажимаете кнопку «ОК», окно не исчезает.Как закрыть окно с запросом на заказ в javascript?

Поскольку я на основе моего кода на код на этой странице: https://www.developphp.com/video/JavaScript/Custom-Prompt-Box-Programming-Tutorial

Но теперь я вижу, что если я копирую пример на этой странице, кнопка OK не работает. Может кто-нибудь сказать мне, что случилось?

Это пример на сайте я связан, который не работает:

<!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> 
+0

Можете ли вы разместить свой код? –

+0

Теперь я добавил пример кода, основанный на сайте. – Tim65

ответ

0

Существует одна возможность проверки с идентификатором используется для элементов в вас код, предоставленный, если вообще есть дубликат id javaScript не будет работать должным образом.

Это утверждение в коде,

document.getElementById('dialogbox').style.display = "none"; 

ли использования элемента с идентификатором «DialogBox» так, если вообще есть другой элемент на странице, имеющей тот же идентификатор. ваш код не будет работать должным образом. Дополнительная помощь может быть предоставлена, если существует общий код с проблемой.

+0

Код, отображаемый на связанном мной сайте, дает ту же ошибку. Поэтому я предполагаю, что там должна быть ошибка. – Tim65

1

Вы пропустили второй параметр для ok кнопки мыши, которая позволяет вызывать функцию после нажатия кнопки ОК:

<button onclick="Prompt.render('And you also smell very nice.', 'doStuff')">Custom Alert 2</button> 

Это будет вызывать doStuff со значением из строки.

Смежные вопросы