2014-04-10 60 views
1

我一直在尋找這個地方,似乎無法找到一個有效的anwser。我擁有的是帶有箭頭和按鈕的滑塊,當單擊箭頭或按鈕時,該函數抓取它用於確定下一張幻燈片的data-cs屬性。如何在JavaScript中將數據屬性值轉換爲整數?

的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> 

在JS的JavaScript

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

功能

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以一系列不同的方式將position變量設置爲int,但仍然在currentslide = position之後將其返回爲Nan,並且滑塊不能再找到合適的幻燈片和函數等。 ..如果任何人有任何想法我可能做錯了,如何正確確保它是一個真正的整數,如果這是從數據屬性posimaible,或者可能有其他方式我可以將該數據作爲和int可能是點擊箭頭或按鈕即可獲得。非常感謝任何幫助!

回答

8

獲取數據使用.data()

$(this).data('sc') 
+2

['.data'](https://api.jquery.com/data/#data2)似乎會返回數值。不需要'parseInt' – Cerbrus

+1

你也可以使用'$(this).data('sc')* 1'; –

+0

當使用'parseInt' allways時添加'radix'。 'parsetInt(var,10)'解析到基數爲10. – phylax

2

似乎沒有人讀的問題。

的NaN應該出現因此:

position = currentslide + 1; 

從代碼中,我看不到currentslide被intialized。如果你做undefined + 1,你會得到NaN

在全局範圍內,設置currentSlide = 0以使其正常工作。除非你隱藏代碼。


ps。標題與描述中提出的問題不符。

相關問題