我一直在寻找这个,似乎无法找到一个有效的anwser。我所拥有的是带有箭头和按钮的滑块,当单击箭头或按钮时,该函数会抓取data-cs属性,用于确定下一张幻灯片。
html
<div id="arrowleft" class="sliderbtns flip" data-sc="prev"></div>
<div id="arrowright" class="sliderbtns" data-sc="next"></div>
<div id="buttons" class="sliderbtns">
<div class="selectedbtn sliderbtns" id="button1" data-sc="1"></div>
<div class="button sliderbtns" data-sc="2"></div>
</div>
javascript
$( ".sliderbtns" ).click(function() {
var button_data = $(this).attr('data-sc');
myslider(button_data);
});
js中的函数
function myslider(position) {
if (position == "next" && (currentslide == slidecount)) {
position = 1;
} else if (position == "next") {
position = currentslide + 1;
} else if ((position == "prev") && (currentslide == 1)){
position = slidecount;
} else if ((position == "prev")) {
position = position - 1;
} else {
// position must then eqauls some integer from the data-sc attribute
position = parseInt(position);
alert (position); // alerts properly the first time
var out_slide = "Slide" + currentslide + "Out";
var next_slide = "Slide" + position;
alert(out_slide); //these work fine the first time
alert(next_slide);
window[next_slide]();
window[out_slide]();
// later on in the slide currentslide becomes position after this it returns value of Nan
setTimeout( function() {
currentslide = position;
alert("this is the current slide position" + currentslide);
}, 2000);
/* ommited code */
}
}
如果我点击箭头,箭头工作正常,但是当我点击一个按钮时,它正好转到下一张幻灯片,但没有一个按钮不再工作,并显示当前位置为NaN,我已尝试制作位置变量使用Number(position),ToInt和ParseInt在一堆不同的方式中使用int,但仍然在currentlide = position之后将它返回为Nan并且滑块无法再找到合适的幻灯片和函数等...如果任何人有任何想法我可能做错了什么,如何确保它是一个实体整数,如果这可以从数据属性,或者可能其他方式我可以抛出那些数据和int可以通过单击箭头或按钮得到。非常感谢任何帮助!
答案 0 :(得分:8)
要获取数据.data()
:
$(this).data('sc')
答案 1 :(得分:2)
似乎没有人在阅读这个问题。
NaN应该出现:
position = currentslide + 1;
从代码中,我看不到currentslide
被初始化。如果您执行undefined + 1
,则会获得NaN
。
在全球范围内,设置currentSlide = 0
以使其正常运行。除非你隐藏代码。
PS。标题与说明中提出的问题不符。