我正在做一个需要我显示和隐藏文本的项目。我希望一首诗出现在屏幕上,经过x倍的时间后消失,然后出现新的文字。我对Javascript和JQuery还是很陌生,所以我不确定如何使它工作。下面是我到目前为止的代码:

的HTML

<p class="mast__text js-spanize" id="verse1">
 Magnetic light in the blue-high haze
</p>

<p class="mast__text js-spanize" id="verse2">
 A magnifying glass upon my face
</p>

<p class="mast__text js-spanize" id="verse3">
 It's so hot I've been melting out here
</p>

JS:
$("#verse1").show();
setTimeout(function() { $("#verse1").hide(); }, 2000);

$("#verse2").show();
setTimeout(function() { $("#verse2").hide(); }, 2000);

$("#verse3").show();
setTimeout(function() { $("#verse3").hide(); }, 2000);

似乎同时调用了两个函数,这使文本同时出现和消失。我确定对此有一个简单的解决方法,但我一直在网上查看,似乎无法解决。

最佳答案

问题在于代码假定setTimeout函数等待时间完成。而是继续执行代码,并在指定的时间后运行代码。要修复它,您只需要嵌套setTimeout函数:

$("#verse2").hide(); // So these aren't showing at the start
$("#verse3").hide();

$("#verse1").show();
setTimeout(function() {
    $("#verse1").hide();

    $("#verse2").show();
    setTimeout(function() {
        $("#verse2").hide();

        $("#verse3").show();
        setTimeout(function() { $("#verse3").hide(); }, 2000);
    }, 2000);

}, 2000);

09-25 16:42
查看更多