2012-06-24 48 views
0

我有以下的HTML與「1-99」看得見的值:如何在按下下一個和上一個按鈕時使用javascript和jquery更改文本值?

<ul class="controls-buttons question-controls"> 

    <li> 
     <a href="#" title="Previous" id="orderPrevious><img src="/Images/control-double-180.png"></a> 
    </li> 
    <li> 
     <a id="orderRange">1 - 99</a> 
    </li> 

    <li> 
     <a href="#" title="Next" id="orderNext"><img src="/Images/control-double.png"></a> 
    </li>    
</ul> 

有,我可以有orderRange變化,因此改變了這樣的被點擊上一頁和下一頁的鏈接時,一個方法是什麼?理想情況下,我想要某種方式,並不意味着我必須硬編碼很多if和else語句。

   1-99  > 100-199 
1-99  < 100-199 > 200-299 
100-199 < 200-299 > 300-399 
200-299 < 300-399 
etc .. 

一旦改變了我想用來存儲使用本地存儲的值象下面這樣:

var store = window.localStorage; 
    store.setItem('Range', xxx) 

我希望有人能幫助我。

+1

小心: 「orderPrevious'缺少結束引號 –

回答

1

這裏有一個解決方案:

function change(d) { 
    var $field = $('#orderRange'); 
    var nums = $field.text().split('-').map(function(a){return parseInt(a,10)+d*100}); 
    if (nums[0]<0) return; 
    else if (nums[0]==101) nums[0]=100; 
    else if (nums[0]==0) nums[0]=1; 
    $field.html(nums.join(" - ")); 
} 

$('#orderPrevious').click(function(){change(-1)}); 
$('#orderNext').click(function(){change(+1)}); 

Demonstration

+0

這個解決方案需要JQuery –

+0

是的,但看看問題的標籤和標題。正如jQuery的指定,我可以做一個(小小)更優雅的解決方案:) –

+1

這個問題也被標記爲JQuery。你得到你要求的。 :] – Cranio

1
function changeRange(delta){ 
    var orderRange=document.getElementById('orderRange'), 
    range=orderRange.innerHTML.split(' - ') 
    range=[parseInt(range[0])+delta,parseInt(range[1])+delta] 
    if(range[0]<0) return 
    orderRange.innerHTML=range.join(' - ') 
    var store = window.localStorage; 
    store.setItem('Range', orderRange.innerHTML) 
} 
document.getElementById('orderNext').onclick=function(){changeRange(100);} 
document.getElementById('orderPrevious').onclick=function(){changeRange(-100);} 
+0

看起來不錯,但在範圍會發生什麼」 你的'ID = 1 - 99「,我的用戶點擊orderPrevious?範圍總是肯定的,所以我不知道這是怎麼回事。 – Alan2

+0

'if(range [0] <0)return'會將範圍保持爲正數 –

相關問題