Javascript代码工作不正常(工作一段时间并崩溃)
我已经为文本制作了一个javascript幻灯片,但是在几个循环之后它被窃听了。 这就是它应该是什么样子(不要介意gif中的光标): 这是在几个循环之后发生的情况: Javascript代码:Javascript代码工作不正常(工作一段时间并崩溃),javascript,Javascript,我已经为文本制作了一个javascript幻灯片,但是在几个循环之后它被窃听了。 这就是它应该是什么样子(不要介意gif中的光标): 这是在几个循环之后发生的情况: Javascript代码: var quote_array = [ "Aš supratau, kad kuo daugiau dirbu,<br/>tuo labiau man sekasi.", "Dirbdamas sau malonų darbą<br/>pasieki tob
var quote_array = [
"Aš supratau, kad kuo daugiau dirbu,<br/>tuo labiau man sekasi.",
"Dirbdamas sau malonų darbą<br/>pasieki tobuliausių rezultatų.",
"Tikras darbas yra darbas<br/>kurio tu nemėgsti."
];
var quoteName_array = [
"-Tomas Džefersonas",
"-Aristotelis",
"-Bilas Watersonas"
];
var quote_i = Math.floor(Math.random()*quote_array.length);
var quote_elem;
var quoteName_elem;
var patikrinti
function quoteNext()
{
quote_i = Math.floor(Math.random()*quote_array.length);
if(patikrinti==quote_i)
{
quoteNext();
}
quote_elem.style.opacity = 0;
quoteName_elem.style.opacity = 0;
setTimeout("quoteSlide()",1100);
}
function quoteSlide()
{
patikrinti = quote_i;
quote_elem.innerHTML = quote_array[quote_i];
quoteName_elem.innerHTML = quoteName_array[quote_i];
quote_elem.style.opacity = 1;
quoteName_elem.style.opacity = 1;
setTimeout("quoteNext()",13900);
}
var quote\u数组=[
“Ašsupratau,kad kuo daugiau dirbu,
tuo labiau man sekasi。”,
“迪尔巴马斯·绍·马龙·达尔布
帕西耶基·托布利奥西·雷祖尔塔。”,
“提克拉斯·达尔巴斯·伊拉·达尔巴斯
库里奥·图内姆·格斯蒂。”
];
变量quoteName_数组=[
“-托马斯·迪泽弗索纳”,
“-亚里士多德”,
“Bilas Watersonas”
];
var quote_i=Math.floor(Math.random()*quote_array.length);
var quote_elem;
变量quoteName_elem;
帕提克林蒂变种
函数quoteNext()
{
quote_i=Math.floor(Math.random()*quote_array.length);
如果(patikrinti==quote_i)
{
quoteNext();
}
quote_elem.style.opacity=0;
quoteName_elem.style.opacity=0;
setTimeout(“quoteSlide()”,1100);
}
函数quoteSlide()
{
patikrinti=引用i;
quote_elem.innerHTML=quote_数组[quote_i];
quoteName_elem.innerHTML=quoteName_数组[quote_i];
quote_elem.style.opacity=1;
quoteName_elem.style.opacity=1;
setTimeout(“quoteNext()”,13900);
}
一开始我没有看到循环,但在quoteNext()
中,您(随机)第二次调用quoteNext()
,这将添加另一个setTimeout(“quoteSlide()”,1100)
因此随着时间的推移,越来越多的“循环”并行运行,最终导致总的闪烁。将您的函数更改为
function quoteNext() {
quote_i = Math.floor(Math.random()*quote_array.length);
if (patikrinti==quote_i) {
quoteNext(); // try again
} else { // but do not continue
quote_elem.style.opacity = 0;
quoteName_elem.style.opacity = 0;
setTimeout(quoteSlide, 1100); // pass functions, not code strings
}
}
你是怎么开始的?看起来它并行运行了几次,我在加载HTML部分(div、blockquote和p元素)后立即启动它。。。quote_elem=document.getElementById(“quote”);quoteName_elem=document.getElementById(“quoteName”);quoteSlide()。。。谢谢你,真的很喜欢你解释一切的方式,理解问题,现在一切都很好:)