如何在javascript中将数据属性值转换为整数?

时间:2014-04-10 14:10:07

标签: javascript jquery

我一直在寻找这个,似乎无法找到一个有效的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可以通过单击箭头或按钮得到。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:8)

要获取数据.data()

 $(this).data('sc')

答案 1 :(得分:2)

似乎没有人在阅读这个问题。

NaN应该出现:

position = currentslide + 1;

从代码中,我看不到currentslide被初始化。如果您执行undefined + 1,则会获得NaN

在全球范围内,设置currentSlide = 0以使其正常运行。除非你隐藏代码。


PS。标题与说明中提出的问题不符。