Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将var增加为数字_Javascript_Jquery - Fatal编程技术网

Javascript 将var增加为数字

Javascript 将var增加为数字,javascript,jquery,Javascript,Jquery,我得到了以下代码: window.setInterval(function(){ var id = $('.slidermenu.currentone').attr('data-id'); var newid = parseInt(id) + 1; //alert(newid + ' - ' + id); $('.slidermenu.currentone').animate({backgroundColor: 'white'}, 'slow'); $(

我得到了以下代码:

window.setInterval(function(){
    var id = $('.slidermenu.currentone').attr('data-id');
    var newid = parseInt(id) + 1;
    //alert(newid + ' - ' + id);

    $('.slidermenu.currentone').animate({backgroundColor: 'white'}, 'slow');
    $('.slidermenu.currentone').removeClass("currentone");
    $('slidermenu[date-id='+newid+']').animate({backgroundColor: '#f3f3f3'}, 'slow');
    $('slidermenu[date-id='+newid+']').addClass("currentone");
    $('#activeimage img.currentone').fadeOut('slow');
    $('#activeimage img.currentone').removeClass("currentone");
    $('#activeimage img[data-id='+newid+']').fadeIn('slow');
    $('#activeimage img[data-id='+newid+']').addClass("currentone");
}, 3000);
window.setInterval(function() {
  var inc = 0;
  return function() {
    inc = 1 + inc % 5;
    var id = $('.slidermenu.currentone').attr('data-id');
    var newid = parseInt(id) + inc;
    alert(inc);
    // slider code
  }
}(), 3000);
我试图制作一个每3秒钟运行一次的函数,然后让我的滑块显示下一幅图像。嗯,它第一次运行时运行得很好。但第二次,它就是不起作用

我认为问题可能在于使
var newid
具有from
id
的编号,再加上
1


另外,我实际上需要它来完成这项工作,直到第5位,然后再到第1位。

看起来你错过了第5位。将新滑块菜单设置为当前滑块菜单时的选择器。试试这个:

$('.slidermenu[date-id='+newid+']').animate({backgroundColor: '#f3f3f3'}, 'slow');
$('.slidermenu[date-id='+newid+']').addClass("currentone");

要增加id,需要使id变量位于增量函数之外,然后在每次调用interval函数时增加它。您可以在闭包中使用它,而不是全局使用它,这通常是首选

// make an anonymous function which reads the id attr and stores it in the id var.
var intervalFunction = (function(){
var id = $('.slidermenu.currentone').attr('data-id')
  , id = parseInt(id);

// return a function which will be run after every 3s and will increment the id
return function(){
  console.log(id++);
  // your slider code here
}})();

window.setInterval(intervalFunction, 1000);

问题是,每次运行interval函数时,它都会在
数据id
的值上加1,而该值不变。由于要循环5个值,因此需要在interval函数之外将增量存储在单独的值中——在以下代码中使用闭包:

window.setInterval(function(){
    var id = $('.slidermenu.currentone').attr('data-id');
    var newid = parseInt(id) + 1;
    //alert(newid + ' - ' + id);

    $('.slidermenu.currentone').animate({backgroundColor: 'white'}, 'slow');
    $('.slidermenu.currentone').removeClass("currentone");
    $('slidermenu[date-id='+newid+']').animate({backgroundColor: '#f3f3f3'}, 'slow');
    $('slidermenu[date-id='+newid+']').addClass("currentone");
    $('#activeimage img.currentone').fadeOut('slow');
    $('#activeimage img.currentone').removeClass("currentone");
    $('#activeimage img[data-id='+newid+']').fadeIn('slow');
    $('#activeimage img[data-id='+newid+']').addClass("currentone");
}, 3000);
window.setInterval(function() {
  var inc = 0;
  return function() {
    inc = 1 + inc % 5;
    var id = $('.slidermenu.currentone').attr('data-id');
    var newid = parseInt(id) + inc;
    alert(inc);
    // slider code
  }
}(), 3000);

为什么不使用全局变量而不是数据属性?您所说的全局变量是什么意思?您可能需要指定
parseInt
的基本参数:
parseInt(id,10)
。这甚至可能找到问题所在。