使用javascript的潜意识快速消息

时间:2015-02-15 18:50:46

标签: javascript jquery html

我的任务是为网站创建一个小部件,一个要求访问者输入文本或图像的小部件,持续时间(以毫秒为单位)和间隔(以秒为单位)。然后是一个jQuery代码,根据持续时间和间隔显示和隐藏消息。

支持用户输入此数据:

var text = "Be positive";
var duration = 30 ms;
var interval = 5000 (every five seconds).

它必须等待5秒钟,然后显示消息"积极的"通过显示DOM元素,然后等待30毫秒再次隐藏它。

这是我的jQuery:

setInterval(
    function update(){
       $('.blink_message').toggleClass('hidden');
    },30);

我的问题是我需要每隔5秒才能实现这个目标吗?我必须在外面添加另一个setInterval吗?

谢谢

4 个答案:

答案 0 :(得分:4)

这是一种方法:

var text = "Be positive";
var duration = 1000; // I changed it so you're able to see the effect better
var interval = 2000;

setInterval(function(){

    $('.blink_message').text(text);
    $('.blink_message').fadeIn('fast', function(){
        setTimeout(function(){
            $('.blink_message').fadeOut('fast');
        },duration);
    });

}, interval);

工作示例:http://jsfiddle.net/thijs_s/fzb9nck4/

如果30ms真的很重要,你应该省去效果(fadeIn / fadeOut)并改用hide()show()

var text = "Be positive";
var duration = 30;
var interval = 5000;

setInterval(function(){

    $('.blink_message').text(text);
    $('.blink_message').show();
    setTimeout(function(){
        $('.blink_message').hide();
    }, duration);

}, interval);

最后一点:如果需要高精度,setTimeoutsetInterval函数可能不是最佳选择。这些功能的分辨率有限(有时可达4ms)。如果你想处理重绘事件的级别(在现代浏览器中每秒大约60次,但取决于设备的cpu有多忙),你应该研究requestAnimationFrame()。您可以使用它实现更高分辨率的计时。

答案 1 :(得分:2)

您可以使用setTimeout而不是setInterval,并使用2个不同的函数来隐藏和显示消息,使用正确的计时器调用另一个。将jQuery对象存储到变量而不是一直创建新的也是个好主意。

var duration = 30;
var interval = 5000;
var blinkMessage = $('.blink_message');

function showMessage() {
    blinkMessage.removeClass('hidden');
    setTimeout(hideMessage, duration)
}

function hideMessage() {
    blinkMessage.addClass('hidden');
    setTimeout(showMessage, interval)
}

showMessage();

在JSFiddle上查看此示例:http://jsfiddle.net/2bv4w62u/1/

答案 2 :(得分:1)

试试这个:

setInterval(function(){
    setTimeout(function(){
        $('.blink_message').toggleClass('hidden');
    },30);
},3000);

答案 3 :(得分:1)

    var text = "Be positive";
    var duration = 30;
    var interval = 5000;


$(document).ready(function(){
    $('.blink_message').hide().text(text);
    setInterval(function(){
       $('.blink_message').show();
       setTimeout(function(){
           $('.blink_message').hide();
       },duration); 
    }, interval);

});

工作Fiddle