2011-10-20 81 views
0

我有許多元素在頁面whis id = "item(\d{1,})"。如何使用最小值和最大值(\d{1,}) regexp快速獲取元素ID?如何從字符串獲取最小/最大int值?

+0

你的意思是ID的形式爲'item123','item42','item69682374534'? –

+0

這與jQuery有什麼關係? :P – jbabey

+0

@jbabey,它可能已經可用,因此是完成任務的有用工具。就我個人而言,我認爲我會從獲取所有數字值開始,因爲正則表達式無法比較它們。手動遍歷找到最小值,然後'getElementById(「item」+ minValue);'。雖然不快。 – Thor84no

回答

1

您還可以使用querySelectorAll如果瀏覽器支持它;所有瀏覽器應該選擇它。 IE 8.以來

var elements = document.querySelectorAll("[id^=item]"); 
var max = null; 
var min = null; 
for(var i = 0; i < elements.length; i++) { 

    var number = elements[i].id.replace(/item/, ""); 

    if(max == null) { 
     max = number; 
     min = number; 
    } 

    else { 
     max = (number > max) ? number : max; 
     min = (number < min) ? number : min; 
    } 
} 

一直支持它如果瀏覽器不支持它,你會做這樣的事情:

//assuming that you're looking for div; just replace it with the actual element 
//you're looking for 
var elements = document.getElementsByTagName("<div">); 

var max = null; 
var min = null; 
for(var i = 0; i < elements.length; i++) { 
    if(/item\d+/.test(elements[i].id)) { 
     var number = elements[i].id.replace(/item/, ""); 

     if(max == null) { 
      max = number; 
      min = number; 
     } 

     else { 
      max = (number > max) ? number : max; 
      min = (number < min) ? number : min; 
     } 
    } 
} 

或者,如果你正在使用jQuery:

var max = null; 
var min = null; 
jQuery("[id^=item]").each(function() { 
    var number = this.id.replace(/item/, ""); 

    if(max == null) { 
     max = number; 
     min = number; 
    } 

    else { 
     max = (number > max) ? number : max; 
     min = (number < min) ? number : min; 
    } 
}); 
1

使用此得到您的ID列表:

$j("[id^=item]").map(function(){ return Number(this.id.substr(4)); }); 

我不認爲jQuery有任何工具即可快速獲取最小/最大價值,但它是相當瑣碎自己寫。

按Vivin要求提供微不足道的一部分:

var arr = $j("[id^=item]").map(function(){ return Number(this.id.substr(4)); }).sort(); 
var min = arr[0]; 
var max = arr[arr.length-1]; 
+0

這並沒有真正回答這個問題。 –

+0

@VivinPaliath問題是關於使用jQuery從元素ID中獲取最小/最大值。 jQuery並沒有真正涵蓋數學/數組函數,所以答案就是jQuery所涵蓋的範圍。如果OP現在真的需要知道從數組中獲得最小/最大值(它對我來說不是這樣),那麼他還有其他更嚴重的問題。雖然竊取答案很好。 –

+0

雖然這個問題沒有用jQuery標記。另外,使用jQuery,您仍然可以通過迭代返回的id來獲取最大值和最小值。 –

相關問題