gpt4 book ai didi

javascript - jquery 新闻自动收报机窃听

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:40 24 4
gpt4 key购买 nike

我正在使用从教程中找到的代码来构建一个一次一行淡入和淡出的新闻自动收报机。它应该在以下几行之间循环:“故事标题 1”、“另一个故事标题 2”、“一些第三个故事标题”和“最后的第四个标题”。问题是新闻行情最终会一次显示多个条目。例如,我会看到类似“故事标题 1 另一个故事标题 2”的内容。更改显示下一行文本所需的时间长度并不能解决问题,但会延迟显示故障。

完整代码如下:

<head> 
<style type="text/css">
/* CSS goes here */
#ticker
{
border: 1px solid #666;
background: #DDD;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
color: #333;
font: 13px/16px Arial,Verdana,sans-serif;
padding: 3px 7px;
width: 400px;
}
#ticker .divider {
padding: 0 4px;
}
#ticker a, #ticker a:visited
{
color: #333;
text-decoration: none;
}
#ticker a:hover
{
color: #930;
}
</style>

</head>

<body>

<div id="ticker" class="newsTicker">
Announcement
<span class="divider">|</span>
<ul>
<li><a href="">Story headline 1</a></li>
<li><a href="">Another Story headline 2</a></li>
<li><a href="">Some third story headline</a></li>
<li><a href="">A final, fourth headline</a></li>
</ul>
</div>



<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script type="text/javascript">
// javascript will go here
$(function()
{
$('#ticker').each(function()
{
var ticker = $(this);
var fader = $('<span class="fader">&nbsp;</span>').css({display:'inline-block'});
var links = ticker.find('ul>li>a');
ticker.find('ul').replaceWith(fader);

var counter = 0;
var curLink;
var fadeSpeed = 600;
var showLink = function()
{
var newLinkIndex = (counter++) % links.length;
var newLink = $(links[newLinkIndex]);
var fadeInFunction = function()
{
curLink = newLink;
fader.append(curLink).fadeIn(fadeSpeed);
};
if (curLink)
{
fader.fadeOut(fadeSpeed, function(){
curLink.remove();
setTimeout(fadeInFunction, 0);
});
}
else
{
fadeInFunction();
}
};


var speed = 1000;
var autoInterval;

var startTimer = function()
{
autoInterval = setInterval(showLink, speed);
};
ticker.hover(function(){
clearInterval(autoInterval);
}, startTimer);

fader.fadeOut(0, function(){
fader.text('');
showLink();
});
startTimer();

});
});
</script>
</body>
</html>

最佳答案

我为您的代码创建了一个 jsfiddle。 http://jsfiddle.net/playerace/Tssds/

我测试了各种时间长度,当淡入/淡出稍微延迟并被您为间隔设置的 1000 毫秒捕获时,就会发生故障。在浏览器或我的示例中浏览多个选项卡,加载此代码的多个 jsfiddle 实例将导致故障。

执行简单的删除和追加修复了故障,因为您无法控制用户在浏览您的页面时的行为,他们可能会加载很多东西。

我能想到的一个解决方案是删除 setInterval 并找到其他方法来在将鼠标悬停在自动收报机上时禁用 showLink()。

关于javascript - jquery 新闻自动收报机窃听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6965353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com