2012-08-16 74 views
0

因此,當我點擊添加按鈕時,它會檢查輸入字段中是否有文本,然後爲它創建一個div,然後將+1加到計數器。問題是櫃檯;它只增加+1,然後再次點擊時什麼也不做。當我刪除一個div它確實很好。所以是的,不會超過1或-1。Javascript計數器不會超過1

網站:

http://web-owl.com/todo/

功能:

function validateForm() 
      { 
       var x=document.forms["forming"]["texting"].value; 
       if (x==null || x=="") 
       { 
       alert("Get it together! You need to have text in there!"); 
       return false; 
       } 
       else 
       { 

      var clone = $('#theDiv') 
       .clone() 
       .attr('id','') 
       .show() 
       .append(
       $('<div>').html(
       $('#textI2').val() 
       ).addClass('futureEditor') 
       ); 
       $('#hold').append(clone) 
       var x = 0; 
      x += 1; 
      document.getElementById("clicked").value = x; 
       return false; 
       } 

      } 

被點擊鏈接:

<form id="forming" name="forming" onsubmit="return validateForm()" method="post"> 

計數器:

<p>You have <input id="clicked" size="3" onfocus="this.blur();" value="0" > Stuffs. </p> 

回答

2

讓您的計數變量全球

var count = 0; 
function validateForm() { 
    var x = document.forms["forming"]["texting"].value; 
    if (x == null || x == "") { 
     alert("Get it together! You need to have text in there!"); 
     return false; 
    } 
    else { 

     var clone = $('#theDiv').clone().attr('id', '').show().append(
     $('<div>').html(
     $('#textI2').val()).addClass('futureEditor')); 
     $('#hold').append(clone) 
     count++; 
     document.getElementById("clicked").value = count; 
     return false; 
    } 

} 
+0

是的,這個偉大的工程!謝謝。 – 2012-08-16 11:18:26

2

var x = 0;引起的問題。你聲明x爲0,每次你撥打validateForm()時加1。所以文本框的值每次都設置爲1。這裏的固定碼:

var x = 0; 
function validateForm() { 
    if (x==null || x=="") { 
    alert("Get it together! You need to have text in there!"); 
    return false; 
    } 
    else { 
    var clone = $('#theDiv') 
     .clone() 
     .attr('id','') 
     .show() 
     .append(
     $('<div>').html(
      $('#textI2').val() 
     ).addClass('futureEditor') 
    ); 
    $('#hold').append(clone) 
    x++; 
    document.getElementById("clicked").value = x; 
    return false; 
    } 
} 
+0

這很有道理,謝謝。 – 2012-08-16 11:12:19

1

你總是初始化x到0

var x = 0; 

這就是爲什麼它顯示alwasys 1

因此,讓一個全局變量並使用它。像

var itemsCount = 0; 

和validateForm()函數替換代碼

var x = 0; 
x += 1; 
document.getElementById("clicked").value = x; 

itemsCount += 1; 
document.getElementById("clicked").value = itemsCount ;