我想要计算错误数(通过在输入为空时增加y值)但是当我想要警告时,显示初始值(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 :(得分: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);
}
答案 1 :(得分:0)
问题出在这一行:
y = y++
执行y++
后,在返回后y
会增加1。因此,每次执行y++
时,它都会从0变为1,但随后它会再次为y =
提供旧值0。这样,它实际上永远不会增加,因为你会用0覆盖它。
当你执行y = ++y
时,它会以另一种方式执行:它向y添加1,然后返回该值。但这完全没必要(只是对另一方++
如何改变行为的解释)。
您需要做的只是:
y++;
这样y
也会更新,您不需要=
部分。
答案 2 :(得分: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);
}