2014-03-04 29 views
0

在課堂上,我們正在學習JavaScript,我們必須找出如何停止按鈕點擊重複添加計數與.insert before 我'爲什麼它不斷地插入計數,這讓人難以理解。我只希望點擊添加一個計數,而不是重複添加內容

 function clicked() { 
      console.log("Clicked!"); 
      var count = "Node Count: "+countChildren(document.getElementById("content")); 
      console.log(count); 
     try { 
      var span = document.createElement("span"); 
      span.innerHTML = count; 
      document.getElementsByTagName("body")[0].insertBefore(span, document.getElementById("content")); 
     } catch(ex) { 
      console.log("error "+ex) 
      } 
     } 
+2

沒有足夠的信息。如何點擊被稱爲?可能來自「dom修改」回調。在任何情況下,如果這是針對課堂的,您需要投入更多時間來自己搞清楚,例如使用調試器等。 –

+0

爲什麼使用insertBefore?您只需將id =「someVar」的div或span,然後分配someVar標記的innerHTML即可計數 – SajithNair

回答

0

修改您的按鈕HTML這樣

<input type ="button" onclick="clicked(); this.onclick=null;"/> 

所以當一旦點擊被執行的功能,這將進一步阻止點擊動作

+0

您假設點擊處理程序使用屬性進行了連接。這在使用JQuery事件處理程序和Knockout數據綁定時不適用 –

+0

@RobertSlaney只有javascript標記了該問題 – Rex

+0

'document.getElementById('id')。addEventListener('click',function(){});該元素的onclick仍然是未定義的。這是純粹的JavaScript。 JQuery和Knockout只是一個例子 –

0

您需要檢查是否已經加入的節點。

var count = ... 
if (count !== 0) { 
     return; 
} 

try { 
    ... 
} 
catch(ex) { 
    ... 
} 
相關問題