2014-09-13 30 views
1

我想統計錯誤數字(通過增加y值當輸入爲空),但是當我想要警報時,show是初始值(0)。驗證表格和計數錯誤

function validateForm() { 

var y = 0; 
$$('#register .inputtext').each(function(item) { 
var my_class = ".mbm ."+item.id+" .sp_9vUokIDmpP8"; 
     var first_class = ".mbm #"+item.id+""; 

if (item.value==null || item.value=="") 
     { 
     y = y++; 
     $$(first_class).invoke('addClassName', 'kl345'); 
     $$(my_class).invoke('setStyle', { display:'block' }); 

     }else{ 
     $$(first_class).invoke('addClassName', 'kl345'); 
     $$(my_class).invoke('setStyle', { display:'none' }); 
     } 

}) 
alert(y); 
} 
+0

調試它,如果使用Chrome按F12鍵,找到你的腳本,將在代碼中的斷點,然後看看發生了什麼 – 2014-09-13 14:04:23

回答

0

問題解決

function validateForm() { 

var y = 0; 
$$('#register .inputtext').each(function(item) { 
var my_class = ".mbm ."+item.id+" .sp_9vUokIDmpP8"; 
     var first_class = ".mbm #"+item.id+""; 

if (item.value==null || item.value=="") 
     { 
     y++; 
     $$(first_class).invoke('addClassName', 'kl345'); 
     $$(my_class).invoke('setStyle', { display:'block' }); 

     }else{ 
     $$(first_class).invoke('addClassName', 'kl345'); 
     $$(my_class).invoke('setStyle', { display:'none' }); 
     } 

}) 
alert(y); 
} 
0

問題就出在這行:

y = y++ 

當你做y++,它增加了1至y返回它。所以每次你做y++它從0到1,但它然後給y =舊值0再次。這樣,它永遠不會實際上增加,因爲你一直用0覆蓋它。

當你想做y = ++y它會以另一種方式做它:它將y加1,然後返回該值。但這是完全沒有必要的(只是解釋另一側的++如何改變行爲)。

所有你需要做的是:

y++; 

這樣y也被更新,您不需要=部分。

0

我認爲你的代碼中有一些語法錯誤。但是,根據您的需要,試試這個:

function validateForm() { 

    var y = 0; 

    $$('#register .inputtext').each(function(item_id) { 

     var my_class = ".mbm ."+item.id+" .sp_9vUokIDmpP8"; 
     var first_class = ".mbm #"+item.id+""; 

     if ($(this).val() == '') { 
      y++; 
      $$(first_class).addClass('kl345'); 
      $$(my_class).css({ display: 'block' }); 

     } else { 
      $$(first_class).addClass('kl345'); 
      $$(my_class).css({ display: 'none' }); 
     } 

    }); 

    alert(y); 
}