所以我有以下jquery代码,while循环工作(即循环运行和$ total更改)完全具有某些值,而与其他值完全不同:
function yearshad ($a, $b) {
var $somenewval=$a;
var $total = 0.0;
console.log($a);// console debug
console.log($b); // console debug
while ($a>$b) {
console.log($a); // console debug
$a -= 1.0;
$total += 1.0/$a;
console.log($a); // console debug
console.log($b); // console debug
}
var $result2 = $total * $somenewval;
return $result2;
}
没有debug console.log命令:
function yearshad ($a, $b) {
var $somenewval=$a;
var $total = 0.0;
while ($a>$b) {
$a -= 1.0;
$total += 1.0/$a;
}
var $result2 = $total * $somenewval;
return $result2;
}
一些工作价值............. $ a = 22 $ b = 2,$ a = 6 $ b = 4,$ a = 5 $ b = 3,$ a = 22 $ b = 11
一些不起作用的值$ a = 22 $ b = 3,$ a = 22 $ b = 10,$ a = 34 $ b = 7
有没有人知道是什么导致这个?
提前致谢
该函数从:
调用function mainfunction() {
$a = $('#currentage').val();
$b = $('#memorystart').val();
$result = yearshad ($a, $b);
$answer = 'random text' + $result + 'random text';
$('#resultline').html($answer);
}
答案 0 :(得分:0)
在尝试对它们进行比较操作之前,您没有将字符串从输入字段转换为数字。在您的函数中,传递字符串"22"
会产生与传递数字22
不同的结果。
如果将其添加到函数的开头:
$a = +$a;
$b = +$b;
然后,它会将两个参数都转换为数字。
function yearshad($a, $b) {
$a = +$a;
$b = +$b;
var $somenewval = $a;
var $total = 0.0;
while ($a > $b) {
$a -= 1.0;
$total += (1.0 / $a);
console.log($total); // console debug
}
var $result2 = $total * $somenewval;
return $result2;
}
仅供参考,可能是字符串失败的比较,因为"22" < "3"
如果是数字就不是这种情况。