我在这里和其他地方整天都在寻找一种方法来使我最初认为很简单的东西工作起来。我想我终于让它工作了,但知道必须有一个更简单的方法。在将我的头撞到墙上之后,我放弃了我的搜索,只是乞求有人告诉我如何以简单的方式做到这一点。
这是我需要做的。在网站的几个页面上,我有一个“上一个”和“下一个”按钮,用于交换在我的页面的另一部分上哪个“div”处于活动状态。无论哪个 div 在给定时间变为“活动”,都需要赋予“活动”类以触发其他事件,如视频开始播放、声音效果、动画等。相同的脚本需要能够从任意数量的页面之一调用,并且“可交换” div 的总数将根据页面而变化。如果在“第一个”div 处于活动状态时按下了上一个按钮,或者在“最后一个”div 处于活动状态时按下了下一个按钮,则不应执行任何操作。
下面是我的javascript
function swap(what) {
"use strict";
var theDivs = [], i;
$(".PortSwap").each(function() {
var cid = $(this).attr("id");
theDivs.push(cid);
});
for (i = 0; i < theDivs.length; i+=1) {
if ($("#" + theDivs[i]).hasClass('active')) {
var curDiv = i;
}
$("#" + theDivs[i]).removeClass('active');
$("#" + theDivs[i]).hide();
}
if (what === 1) {
if ((curDiv + 1) < theDivs.length){
$("#" + theDivs[curDiv + 1]).addClass('active');
$("#" + theDivs[curDiv + 1]).show();
} else {
$("#" + theDivs[curDiv]).addClass('active');
$("#" + theDivs[curDiv]).show();
}
} else {
if ((curDiv - 1) >= 0){
$("#" + theDivs[curDiv - 1]).addClass('active');
$("#" + theDivs[curDiv - 1]).show();
} else {
$("#" + theDivs[curDiv]).addClass('active');
$("#" + theDivs[curDiv]).show();
}
}
}
window.onload = function () {
"use strict";
var pDivs = $(".PortSwap"), k;
for (k = 0; k < pDivs.length; k += 1) {
if (pDivs[k] !== -1) {
$(".PortSwap").hide();
}
}
$('#swap0').show();
$('#swap0').addClass("active");
};
下面是我的html
<div id="content">
<div id="ncholder">
<div id="ncframe"></div>
<div class="PortSwap" id="swap0"><img src="img/nvc1.jpg" alt="Web Screen 1"></div>
<div class="PortSwap" id="swap1"><img src="img/nvc2.jpg" alt="Web Screen 2"></div>
<div class="PortSwap" id="swap2"><img src="img/nvc3.jpg" alt="Web Screen 3"></div>
</div>
<div id="ncnav">
<img src="img/backward.gif" alt="Previous" onClick="swap(0)">
<img src="img/forward.gif" alt="Next" onClick="swap(1)">
</div>
</div>
</div>
我的印象是css在这里并不重要,我尝试为此创建一个jsFiddle,但即使它目前似乎正在我的测试服务器上工作,也无法让它工作。
请帮忙!我对javascript并不陌生,尽管已经有一段时间了。我是 jQuery 的新手。提前致谢!