0

我正在尝试使用两个图像作为我的教程脚本的播放和暂停按钮。如何用两个图像代替 JavaScript 中的“开始”和“停止”?

这是我的 JavaScript:

$(document).ready(function(){
fadeLoop()
function fadeLoop() {

    var counter = 0,
        divs = $('.fader').css('visibility','visible').hide(),
        dur = 100;

    function showDiv() {
        $("div.fader").fadeOut(dur) // hide all divs
            .filter(function(index) {
                return index == counter % divs.length;
            }) // figure out correct div to show
            .delay(dur) // delay until fadeout is finished
            .fadeIn(dur); // and show it
        counter++;
    }; // function to loop through divs and show correct div
    showDiv(); // show first div    
    return setInterval(function() {
        showDiv(); // show next div
    }, 4 * 1000); // do this every 7 seconds    
};

$(function() {
    var interval;

    $("#start").click(function() {
        if (interval == undefined){
            interval = fadeLoop();
            $(this).val("Stop");
        }
        else{
            clearInterval(interval);
            $(this).val("Start");
            interval = undefined;
        }
    });
});
});

这是我的小提琴:小提琴!

4

2 回答 2

1

只需在标记中为图像设置 onclick 事件,而不是按钮。然后您可以使用 attr JQuery 函数修改图像:

$(this).attr('src', '[path to my image]');

我无法加载您的 JSFiddle,但查看一些标记可能会有所帮助。

编辑:

我再次检查,JSFiddle 现在似乎已经启动了。标记底部的输入应该是 div 或 img 标签。如果您使用 img 标签,请使用上面的代码在点击事件上修改源图像。

div 可能会更好,因为您可以预加载背景图像。在 div 的情况下,您可以使用两个 CSS 类设置背景图像:

.start {
    background-image: url('start.png');
}

.stop{
    background-image: url('stop.png');
}

然后您需要删除开始类并添加停止类,反之亦然:

$(this).removeClass('start');
$(this).addClass('stop');

如果您修改 CSS 停止选择器并将其设置为“.start.stop”,您甚至可以删除和添加停止类,而不必担心删除和添加开始类。

于 2013-02-05T18:00:09.100 回答
1

不要更改元素的文本值,而是更改 CSS 类名称。有两个不同的类,每个类都使用背景图像。

于 2013-02-05T17:57:32.867 回答