当我调用此函数时会发生奇怪的错误。
所以我在代码中添加了两个句子来找出问题所在。
第一个是6行alert(result);
第二个是12行alert(wordbook_info_percentage+">="+result);
然后我执行我的代码,我发现结果变量是“100.0”和
"wordbook_info_percentage>=result" condition in "info_change_frame"
时wordbook_info_percentage is 2.0 and result is 100.0
函数变为true
我无法理解为什么2.0>=100.0
是真的。我的错是什么?
请帮帮我。
function word_book_info_change_1(){
var wordbook_info_percentage=parseFloat(($('#wordbook_info_1').text()).replace('%','')).toFixed();
arr[0]=43;
var result=parseFloat((parseInt(arr[0])+parseInt(word_number))*100/parseInt(arr[1])).toFixed(1);
alert(result);
var info_change_1_repeat=setInterval(info_change_frame,10);
function info_change_frame(){
if(wordbook_info_percentage>=result){
alert(wordbook_info_percentage+">="+result);
ClearInterval(info_change_1_repeat);
}
else{
wordbook_info_percentage=(parseFloat(wordbook_info_percentage)+0.1).toFixed(1);
$('#wordbook_info_1').text(wordbook_info_percentage+"%");
}
}
}
答案 0 :(得分:3)
"2.0">="100.0"
true
2.0>100.0
false
parseInt("2.0")>parseInt("100.0")
false
我认为你应该将值解析为int。
function word_book_info_change_1(){
var wordbook_info_percentage=parseFloat(($('#wordbook_info_1').text()).replace('%','')).toFixed();
arr[0]=43;
var result=parseFloat((parseInt(arr[0])+parseInt(word_number))*100/parseInt(arr[1])).toFixed(1);
alert(result);
var info_change_1_repeat=setInterval(info_change_frame,10);
function info_change_frame(){
if(parseInt(wordbook_info_percentage)>=paseInt(result)){
alert(wordbook_info_percentage+">="+result);
ClearInterval(info_change_1_repeat);
}
else{
wordbook_info_percentage=(parseFloat(wordbook_info_percentage)+0.1).toFixed(1);
$('#wordbook_info_1').text(wordbook_info_percentage+"%");
}
}
}
答案 1 :(得分:0)
您正在将这些数字转换为number.toFixed(1)
字符串。将字符串与数字进行比较使用基数排序,这就是您对比较感到困惑的原因。
只需将toFixed
调用移动到您将值设置为某个DOM的末尾即可。
var a = 12.345;
var b = 5.35;
console.log(a, b);
console.log(a.toFixed(1), b.toFixed(1));
console.log(a > b);
console.log(a.toFixed(1) > b.toFixed(1));