Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 循环上课_Javascript_Jquery_Css_Cycle - Fatal编程技术网

Javascript 循环上课

Javascript 循环上课,javascript,jquery,css,cycle,Javascript,Jquery,Css,Cycle,我已经得到了下面的html,我希望通过它自动循环。它目前是通过onclick手动完成的。但是我怎样才能让它循环呢?它基本上只是更改包装器div上的类名,如下所示: <body> <div id="client-relations-bg" class="background_tab1"> ...content... </div> </body> …内容。。。 我在这里有班级形象信息,在头部: <style

我已经得到了下面的html,我希望通过它自动循环。它目前是通过onclick手动完成的。但是我怎样才能让它循环呢?它基本上只是更改包装器div上的类名,如下所示:

<body>
    <div id="client-relations-bg" class="background_tab1">
        ...content...
    </div>
</body>

…内容。。。
我在这里有班级形象信息,在头部:

<style type="text/css">
    #client-relations-bg.background_tab1{background: url('/media/2/background-image-1.png') no-repeat center top;}
    #client-relations-bg.background_tab2{background: url('/media/32/background-image-6.jpg') no-repeat center top;}
    #client-relations-bg.background_tab3{background: url('/media/17/background-image-3.jpg') no-repeat center top;}
    #client-relations-bg.background_tab4{background: url('/media/12/background-image-2.png') no-repeat center top;}
    #client-relations-bg.background_tab5{background: url('/media/22/background-image-4.jpg') no-repeat center top;}
    #client-relations-bg.background_tab6{background: url('/media/37/background-image-7.jpg') no-repeat center top;}
    #client-relations-bg.background_tab7{background: url('/media/2900/Header_image.jpg') no-repeat center top;}
</style>

#客户关系bg.background_tab1{background:url('/media/2/background-image-1.png')无重复中心顶部;}
#客户关系bg.background_tab2{background:url('/media/32/background-image-6.jpg')无重复中心顶部;}
#客户关系bg.background_tab3{background:url('/media/17/background-image-3.jpg')无重复中心顶部;}
#客户关系bg.background_tab4{background:url('/media/12/background-image-2.png')无重复中心顶部;}
#客户关系bg.background_tab5{background:url('/media/22/background-image-4.jpg')无重复中心顶部;}
#客户关系bg.background_tab6{background:url('/media/37/background-image-7.jpg')无重复中心顶部;}
#客户关系bg.background_tab7{background:url('/media/2900/Header_image.jpg')无重复中心顶部;}

所以我需要这个:
class=“background\u tab1”
循环通过
tab1
tab7

jQuery有非常好的类操作方法。您只需解析当前类以查找当前的数字,或者将其存储在全局变量中,然后在设置下一个变量时执行
i++%7

jQuery有非常好的类操作方法。您只需解析当前类以查找当前的数字,或者将其存储在全局变量中,然后在设置下一个变量时执行
i++%7

如果您事先知道自己的类名,则可以:

var
  classList = ['background_tab1', 'background_tab2', 'background_tab3'],
  $el = $('#client-relations-bg');

(function next() {
  setTimeout(function () {
    classList.push(classList.shift());
    $el.removeClass().addClass(classList[0]);
    next();
  }, 2000);
}());

如果您事先知道自己的类名,则可以:

var
  classList = ['background_tab1', 'background_tab2', 'background_tab3'],
  $el = $('#client-relations-bg');

(function next() {
  setTimeout(function () {
    classList.push(classList.shift());
    $el.removeClass().addClass(classList[0]);
    next();
  }, 2000);
}());

实际上不需要使用jQuery

(function(){
    var interval = 1000;
    var currentBackgroundId = 1;
    window.setInterval(function(){
        currentBackgroundId++;
        if (currentBackgroundId == 8) currentBackgroundId = 1;

        var element = document.getElementById('client-relations-bg');
        element.className = 'background_tab' + currentBackgroundId;
    }, interval);
})();

实际上,您不需要使用jQuery

(function(){
    var interval = 1000;
    var currentBackgroundId = 1;
    window.setInterval(function(){
        currentBackgroundId++;
        if (currentBackgroundId == 8) currentBackgroundId = 1;

        var element = document.getElementById('client-relations-bg');
        element.className = 'background_tab' + currentBackgroundId;
    }, interval);
})();

以下是一种方法:

var classes = [
    "background_tab1",
    "background_tab2",
    "background_tab3",
    "background_tab4",
    "background_tab5",
    "background_tab6",
    "background_tab7"
];
setInterval(function() {
    var $div = $("#client-relations-bg");
    $.each(classes, function(i, c) {
        if ($div.hasClass(c)) {
            var j = (i + 1) % classes.length;
            $div.removeClass(c).addClass(classes[j]).text(classes[j]);
            return false;
        }
    });
}, 2000);
}));​


这里有一种方法:

var classes = [
    "background_tab1",
    "background_tab2",
    "background_tab3",
    "background_tab4",
    "background_tab5",
    "background_tab6",
    "background_tab7"
];
setInterval(function() {
    var $div = $("#client-relations-bg");
    $.each(classes, function(i, c) {
        if ($div.hasClass(c)) {
            var j = (i + 1) % classes.length;
            $div.removeClass(c).addClass(classes[j]).text(classes[j]);
            return false;
        }
    });
}, 2000);
}));​



@CR41G14:光靠这一点无助于解决问题。当然,在没有jQuery的情况下也可以做到这一点,但可能不是那么容易。@Constantinius我基本上是在为reasearch@CR41G14当前位置仅此一点无助于解决问题。同样,在没有jQuery的情况下也可以做到这一点,但可能不是那么容易。@Constantinius我基本上是在为Reasearch设置一个平台。这很好,谢谢,你如何添加淡入淡出呢。但是你把它放在哪里?在next().fadeIn(500)之后?你想淡入背景图像吗?恐怕,如果没有额外的标记和对上面代码的大量更改,淡入背景图像是不可能的;这不是上面代码的问题,而是背景图像褪色的问题,因为没有css属性可使用。一个将不得不使用多个元素堆叠在另一个元素和更多的东西之上,这可能会很快变得混乱。一个可用的假象是淡入过渡色(例如白色/黑色)更改图像并淡出颜色。但这仍然需要在标记中至少添加一个元素。好的,谢谢,我刚刚尝试了fadeIn淡出,它也淡出div中的所有内容,而不仅仅是图像。这很好,谢谢,你如何添加淡出。但是你把它放在哪里?在next().fadeIn(500)之后?你想淡入背景图像吗?恐怕,如果没有额外的标记和对上面代码的大量更改,淡入背景图像是不可能的;这不是上面代码的问题,而是背景图像褪色的问题,因为没有css属性可使用。一个将不得不使用多个元素堆叠在另一个元素和更多的东西之上,这可能会很快变得混乱。一个可用的假象是淡入过渡色(例如白色/黑色)更改图像并淡出颜色。但是这仍然需要在标记中至少添加一个元素。好的,谢谢,我刚刚尝试了fadeIn淡出,它也淡出了div中的所有内容,不仅仅是图像。这很好,淡出会在哪里呢?在.text(j).fade(500)?你能解释一下什么是淡入淡出的吗?这很好用哦,淡入淡出会是什么样子?在.text(j).fade(500)?你能解释一下什么是淡入淡出的吗?