0

我有以下内容input<input id="meepmeep" type="range" min="0" max="128" step="1" value="0" />

我正在打一个基本setInterval()电话:

setInterval(function() {
    var newVal = $('#meepmeep').val() + 1;
    $('#meepmeep').val(newVal);
}, 500);

但是增量val() + 1似乎有val() + 50什么想法?!

懒惰的小提琴:http: //jsfiddle.net/neuroflux/SNYsa/

4

5 回答 5

3

该值被解析为字符串。将数据类型转换为数字以解决问题:

setInterval(function() {
    var newVal = parseInt($('#meepmeep').val()) + 1;
    $('#meepmeep').val(newVal);
}, 500);
于 2013-10-14T11:41:04.670 回答
1

那是因为.val()返回一个字符串,你应该在添加之前将字符串转换为数字:

setInterval(function() {
    $('#meepmeep').val(function(i, str) { return ++str; });
}, 500);

http://jsfiddle.net/SNYsa/1/

于 2013-10-14T11:40:55.813 回答
1

这是一个通用函数,它将滑动到给定 jQuery 元素范围内的给定值。

$("button").on("click", function(){
   slideToValue(75, $("#slider"));
});

function slideToValue(num, $input) {
	const interval = function() {
  	const cur = $input.val();
  	
    if (cur < num) {
    	console.log(`Value is ${cur}. Incrementing!`);
    	$input.val(parseInt(cur) + 1);
    } else if (cur > num) {
    	console.log(`Value is ${cur}. Decrementing!`);
    	$input.val(parseInt(cur) - 1);
    } else {
    	console.log(`Arrived at ${num}!`);
    	clearInterval(slowly);
    }
  }
	const slowly = setInterval(interval, 10);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button>Set to 75</button>
<input type="range" id="slider">

于 2019-05-21T21:26:12.220 回答
0
setInterval(function() {
    var newVal = parseInt($('#meepmeep').val()) + 1.0;
    $('#meepmeep').val(newVal);
}, 500);

工作正常 ;)

于 2013-10-14T11:40:57.500 回答
0
var newVal = $('#meepmeep').val() + 1;

结果

Run 
1st time value = 1
2nd time  = 11
3rd time = 111
4th time = 1111

因为您要添加string不将其转换为integer value

正确的代码 Jsfiddle

setInterval(function() {
    var newVal = $('#meepmeep').val(function(i, val) {
       return +val + 1;
    });
}, 500);

Jsfiddle

setInterval(function() {
    var newVal = parseInt($('#meepmeep').val()) + 1;
    $('#meepmeep').val(newVal);
}, 500);

读取parseInt()

于 2013-10-14T11:41:00.707 回答