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

Ale*_*lex 1 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>
Run Code Online (Sandbox Code Playgroud)

javascript

$( ".sliderbtns" ).click(function() {
    var button_data = $(this).attr('data-sc');
    myslider(button_data);
});
Run Code Online (Sandbox Code Playgroud)

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 */
    }
 }
Run Code Online (Sandbox Code Playgroud)

如果我点击箭头,箭头工作正常,但当我点击一个按钮时,它正好转到下一张幻灯片,但没有按钮不再工作,并显示当前位置为NaN,我已尝试将位置变量设为int一堆不同的方式与Number(位置),ToInt和ParseInt,但仍然在currentlide = position之后它将它返回为Nan并且滑块无法再找到合适的幻灯片和功能等...如果任何人知道我是什么可能是错误的,如果可以正确地确定它是一个实体整数,如果它可以从数据属性,或者可能其他方式我可以通过单击箭头或按钮得到的数据和int可以获得.非常感谢任何帮助!

Mil*_*war 9

要获取数据.data():

 $(this).data('sc')
Run Code Online (Sandbox Code Playgroud)

  • [`.data`](https://api.jquery.com/data/#data2)似乎返回数值.不需要`parseInt` (2认同)
  • 你也可以使用`$(this).data('sc')*1`;) (2认同)