2014-09-22 19 views
0

我有一个<a href='...'>link</a>,我想调用一个自定义警告,如果他们点击它,然后选择一个“确定”或“取消”按钮与HTML中的基础采取适当的行动。如果“确定”,则默认操作或者“取消”。Javascript中的函数返回行为

在HTML代码的代码是:

<div id="dialogoverlay"></div> 
<div id="dialogbox"> 
<div> 
    <div id="dialogboxhead"></div> 
    <div id="dialogboxbody"></div> 
    <div id="dialogboxfoot"></div> 
</div> 
</div> 

<a href='sumcodehere' return onclick=\"javascript: return Warn.render(\'This operation cannot be reversed.\')\"><img></a> 

JavaScript代码如下:

<script> 
function Warn() { 
    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 = "300px"; 
    dialogbox.style.display = "block"; 
    document.getElementById('dialogboxhead').style.background = "url('../images/warningHead.gif') no-repeat"; 
    document.getElementById('dialogboxhead').style.height = "30px"; 
      document.getElementById('dialogboxbody').style.background = "#fbfab9"; 
    document.getElementById('dialogboxbody').innerHTML = dialog; 
      document.getElementById('dialogboxfoot').style.background = "#fbfab9"; 
    document.getElementById('dialogboxfoot').innerHTML = '<button onclick="return  Warn.ok(); return false">Go Ahead and Delete</button>&nbsp;<button onclick="return Warn.cancel(); return true">Get Me Out Of Here!</button>'; 
      return false; 
} 
this.ok = function() { 
    document.getElementById('dialogbox').style.display = "none"; 
    document.getElementById('dialogoverlay').style.display = "none"; 
      return true; 
} 
this.cancel = function() { 
    document.getElementById('dialogbox').style.display = "none"; 
    document.getElementById('dialogoverlay').style.display = "none"; 
      return false; 
} 

我想这在Firefox和展出行为是哪个按钮会弹出警告对话框,但是两个按钮在点击时都会返回“false”。

回答

0

起初HTML需要固定:(删除未知return属性并固定在onclick属性的引用)

<a href="sumcodehere" onclick="return warn.render('This operation cannot be reversed.')"> 
    <img src="..." alt="..." /> 
</a> 

然后,在JS,Warn()看起来像一个构造函数,利用它和create a global object

var warn = new Warn(); 

请注意t开头的小写字母他变量名称。内联处理程序中使用相同的变量。

将事件监听器附加到元素的更好方法是使用addEventListener方法。

+0

引用的原因是因为这是由Perl代码中的“print”语句生成的代码...因为它包含在引号内部,引号必须转义。 – 2014-09-22 19:48:17

+0

@ D.LawrenceBarksdale嗯,在这篇文章中没有提及Perl。无论如何,我已经发布了最终解析的HTML。你是否让事件监听者工作? – Teemu 2014-09-23 04:02:23