gpt4 book ai didi

javascript - Jquery 旋转图像横幅第一图像问题

转载 作者:行者123 更新时间:2023-11-28 10:09:53 25 4
gpt4 key购买 nike

我为内部 CMS 创建了一个旋转图像横幅模块。我没有为此编写所有的jquery,这就是为什么我有点困惑。

基本上,问题是页面重新加载后横幅中显示的第一个图像不会像其余图像那样淡出。我知道这可能是因为它是加载的默认图像,而不是导致图像横幅旋转的循环的一部分。横幅可以在这里看到:http://www.easyspacedesign.com/craig/dentalwise/

请注意,重新加载排序后的第一个图像如何跳转到下一个图像,但随后所有图像都会平滑地淡入和淡出。

如何在重新加载后抓取第一张图像并使其像休息一样淡出?

这是代码:

<script type="text/javascript">
<!--

var doLooop = true;

$(document).ready(function(){
setInterval("loop()",5000);
});

function loop(){
if(!doLooop){ return; }
var $total = parseInt($("input[name=total_slides]").val());
var $id = parseInt($("a._active").attr("rel"));
var $new = $id+1;
if($new>$total){$new=1;}
changeSlide($new);
}

function changeSlide($id){
// Prepare selectors
var $total = $("input[name=total_slides]").val();
var $txtSlt = "#_slideText_"+$id;
var $imgSlt = "#_slideImg_"+$id;
var $active = $("a._active").attr("id");
var $new_img_href = "#animation_selectors a:nth-child("+$id+") img";
var $new_active = "#animation_selectors a:nth-child("+$id+")";
// Hide active images and text
$(".slideImg").css("display","none");
$(".slideTxt").css("display","none");
// Display selected images and text
$($txtSlt).fadeIn(1200);
$($imgSlt).fadeIn(1200);
$($txtSlt).delay(2500).fadeOut(1200);
$($imgSlt).delay(2500).fadeOut(1200);
// Update active anchor image
$("a._active img").attr("src","<?php echo ROOT; ?>Images/StyleImages/off.png");
$("a._active").removeClass("_active");
$($new_img_href).attr("src","<?php echo ROOT; ?>Images/StyleImages/on.png");
$($new_active).addClass("_active");
}

$(function(){
$("#animation_selectors a").click(function(e){
e.preventDefault();
var $id = $(this).attr("rel");
doLooop = false;
changeSlide($id);
});
});

-->
</script>
<div id="animation">

<div id="animation_slides">
<?php
$img_sql = "SELECT strImageUrl FROM tbl_mod_Animation ORDER BY intAnimationID";
if($img = $db->get_results($img_sql)){ $i=1;
foreach($img as $img){
if($i!=1){ $display = " style=\"display:none;\""; } else { $display = ""; }
echo "<div id=\"_slideImg_$i\" class=\"slideImg\" $display><img src=\"".ROOT."Images/Uploads/Slides/".$img->strImageUrl."\" alt=\"\" /></div>";
$i++;
}
}
?>
</div>
<div id="animation_text">
<?php
$text_sql = "SELECT strText FROM tbl_mod_Animation ORDER BY intAnimationID";
if($text = $db->get_results($text_sql)){ $i=1;
foreach($text as $text){
if($i!=1){ $display = " style=\"display:none;\""; } else { $display = ""; }
echo "<div id=\"_slideText_$i\" class=\"slideTxt\" $display>".$text->strText."</div>";
$i++;
}
}

?>
</div>

<div id="animation_selectors">
<?php
for($x=1;$x<$i;$x++){
if($x==1){
?><a id="slide_opt<?php echo $x; ?>" href="#" rel="<?php echo $x; ?>" class="_active"><img class="slideOpt" src="<?php echo ROOT; ?>Images/StyleImages/on.png" alt="" /></a><?php
} else {
?><a id="slide_opt<?php echo $x; ?>" href="#" rel="<?php echo $x; ?>"><img class="slideOpt" src="<?php echo ROOT; ?>Images/StyleImages/off.png" alt="" /></a><?php
}
}
echo "<input type=\"hidden\" name=\"total_slides\" value=\"".($i-1)."\" />";

?>
</div>

</div><!--end of animation-->
<?php

?>

最佳答案

changeSlide() 将每张幻灯片设置为淡入,然后在 2.5 秒内淡出。 Loop() 每 5 秒调用一次 changeSlide() 并传递要显示的下一张幻灯片的 id。问题是第一张幻灯片在页面重新加载时的设置方式不同。它可能只是用 _active 类静态地写在页面上。

您最好不要设置延迟以在 2.5 秒后淡出每张幻灯片,而是将上一张和下一张幻灯片都传递给 changeSlide 函数,然后淡出上一张并淡入下一张。

function loop() {
...
changeSlide($id, $new);
}

然后在changeSlide中:

function changeSlide($prev, $next) { 
...
var $prevTxtSlt = "#_slideText_" + $prev;
var $prevImgSlt = "#_slideImg_" + $prev;
var $nextTxtSlt = "#_slideText_" + $prev;
var $nextImgSlt = "#_slideImg_" + $prev;
...
$($prevTxtSlt).fadeOut(1200);
$($prevImgSlt).fadeOut(1200);
$($nextTxtSlt).fadeIn(1200);
$($nextImgSlt).fadeIn(1200);
}

关于javascript - Jquery 旋转图像横幅第一图像问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595917/

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