2013-01-03 57 views
0

我正在使用bootsrtap爲我的項目。當我在javascript中使用innerHtml替換某些部分它將無法正常工作。使用innerhtml後,然後單擊按鈕將不會迴應

<div id="confirm_body"> 
       <div class="modal-body"> 
        <p>Enter the email configured in your profile. A password reset link will be sent to by email. </p> 
        <label>User Name</label> 
        <input class="login-class" type="text" name="username" id="username" size="30"/> 
        <label>Enter email address</label> 
        <input class="login-class" type="text" name="emailAdd" id="emailAdd" size="30"/> 
       </div> 
       <div class="modal-footer"> 
        <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> 
        <button class="btn btn-primary" id="sendConfMail">Submit</button> 
       </div> 
      </div> 

但經過我更換這個使用JavaScript,

document.getElementById('sendConfMail').onclick=function(){ 
          document.getElementById('confirm_body').innerHTML='<div class="modal-body"><div class="alert alert-success"> Your confirmation email sent! </div> </div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Close</button></div>'; 
          }; 

在此之後,當我點擊與ID = sendConfMail的按鈕,沒有任何happend。 這是爲什麼?

+0

你把「document.getElementById ....」放在哪裏? – HMarioD

+0

您的代碼工作正常,請參閱:http://jsfiddle.net/BWqmG/ – Xocoatzin

+1

它看起來像你有一個競爭條件的情況。點擊時,您替換您的div的內容,在某些情況下,表單可能不會被髮送。例如,至少你可以嘗試用setTimeout來延遲getElementById。 – PEM

回答

0

嘗試在JQuery的使用:

$("#sendConfMail").click(function(){ 
$("#confirm_body").html('<div class="modal-body"><div class="alert alert-success"> Your confirmation email sent! </div> </div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Close</button></div>') 

}); 
+0

這是行不通的。當更換一次的時候,javascript將無法工作。我找到了一些原因但是無法解決我的問題。這是addEventListener更改內容後的問題。 –

0

,你正在使用innerHTML從您發佈的代碼這不是顯而易見的,但要知道,使用,使用innerHTML = foo;將刪除任何事件是非常重要的您創建的處理程序,並且不允許您創建新的事件處理程序,除了嵌入式JavaScript。

+0

有什麼替代品,使用innerHTML = foo;我也使用jquery,但它不會工作。 –

+0

你能把樣品放在jsfiddle.net上嗎?我應該能夠爲你提供這樣的東西。 –

相關問題