gpt4 book ai didi

javascript - JavaScript 中莫名其妙的数学错误

转载 作者:行者123 更新时间:2023-12-02 20:16:49 25 4
gpt4 key购买 nike

我有一个函数,用来克隆flash文章滚动条this page 。不幸的是,我位于防火墙后面,因此无法上传我自己的代码,但这应该可以给您一个想法。功能:

function select(id) {
alert(active+"\n"+((active+1)%4));

var prev = active;
active = (typeof(id) == "undefined" ? (active+1)%4 : id);

$("#panel").animate({"top": tops[active]}, 750);
$("#main"+prev).fadeOut(750);
$("#main"+active).fadeIn(750);
}

因此,如果在没有 id 的情况下调用 select(),它只会按顺序前进到下一个项目,否则它会转到所选项目。它在定义的计时器上运行:

timer = setInterval("select()", 5000);

当鼠标悬停在对象上时,将运行此函数:

$("img.thumb").mouseover(function() {
clearInterval(timer);
select($(this).attr("id").substr(-1));
timer = setInterval("select()", 5000);
});

问题在于,鼠标悬停后,选择功能会在一个周期内失败,下一个对象与前一个对象没有关系。所选对象是一致的 - 在给定相同初始条件的情况下,每次刷新它都保持相同,但我可以确定它在任何方面都是无关的。

最奇怪的是,我在 select() 开始时运行的警报(这应该是一个简单的数学运算)失败了,声称(对于我测试的序列 - 等待从 0 - 1 的自动滚动,然后鼠标悬停 3) (3+1)%4=3。

我已经在 Firefox 和 Chrome 中对此进行了测试,因此它似乎是 javascript 固有的。

我只能假设它以某种方式存储了两个不同的 active 值,但这种 split 的本质以及如何解决它超出了我的范围。

我已在下面附加了整个文件,以防其他相关内容。似乎不太可能,但目前我不排除任何可能性。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<meta http-equiv="imagetoolbar" content="no" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
//alter these as you please
var thumbs = ["images/1t.png", "images/2t.png",
"images/3t.png", "images/4t.png"];
var mains = ["images/1.png", "images/2.png",
"images/3.png", "images/4.png"];
var links = ["http://www.goldcoast.com.au/gold-coast-beaches.html",
"http://www.goldcoast.com.au/gold-coast-whale-watching.html",
"http://www.goldcoast.com.au/gold-coast-hinterland-rainforest.html",
"http://www.goldcoast.com.au/gold-coast-history.html"];

//don't touch these
var timer = null;
var active = 0;
var tops = [0, 77, 155, 234];

function select(id) {
alert(active+"\n"+((active+1)%4));

var prev = active;
active = (typeof(id) == "undefined" ? (active+1)%4 : id);

$("#panel").animate({"top": tops[active]}, 750);
$("#main"+prev).fadeOut(750);
$("#main"+active).fadeIn(750);
}

$(function() {
for(var i = 0; i < 4; i++) {
$("#thumb"+i).attr("src", thumbs[i]);
$("#main"+i).attr("src", mains[i]);
}

$("#main"+active).show();

$("img.thumb").mouseover(function() {
clearInterval(timer);
select($(this).attr("id").substr(-1));
timer = setInterval("select()", 5000);
});

timer = setInterval("select()", 5000);
});
</script>
<style type="text/css">
#container {position:relative;}

#panel {position:absolute;left:0px;top:0px;z-index:1;}

img.thumb {position:absolute;left:8px;z-index:2;}
#thumb0 {top:7px;}
#thumb1 {top:84px;}
#thumb2 {top:162px;}
#thumb3 {top:241px;}

img.main {position:absolute;left:118px;top:2px;display:none;}
</style>
</head>
<body>
<div id="container">
<img src="images/panel.png" id="panel" />
<img id="thumb0" class="thumb" />
<img id="thumb1" class="thumb" />
<img id="thumb2" class="thumb" />
<img id="thumb3" class="thumb" />
<img id="main0" class="main" />
<img id="main1" class="main" />
<img id="main2" class="main" />
<img id="main3" class="main" />
</div>
</body>
</html>

最佳答案

按照建议使用parseInt()

关于javascript - JavaScript 中莫名其妙的数学错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171836/

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