2014-09-22 36 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