2012-10-23 67 views
0

我有一個元素ID的DIV;例如「bgjhkn2n2-20」。我試圖正確地獲得正則表達式,以便可以根據ID將報表動態加載到div中。使用正則表達式/ Javascript獲取元素ID的組值使用正則表達式/ Javascript

console.log(elemID)按預期打印bgjhkn2n2-20。它不會打印通常以元素ID爲前綴的#號。 console.log(repDBID[0])打印完整的元素ID;但是我不能用螢火蟲打印我在console.log(repDBID[0])的regextester中從類似測試中得到的組。如果我追加一個索引號到匹配語句,它會返回null。

幫助?

var baseURL = window.location.protocol + "//" + window.location.hostname + "/db/"; 
var genREP = "?a=API_GenResultsTable&qid="; 

$('#tab1 div').each(function (e){ 
    var elemID = this.getAttribute('id'); 
    console.log(elemID); 
    var pattern=/([a-z0-9]{9})-([1-9]{1}[0-9]*)/g 
    var repDBID = elemID.match(pattern); //get dbid  
    console.log(repDBID[0]); 
    var repID = elemID.match(pattern)[2]; //get qid 
    //console.log(repID); 
    //$(this).load(baseURL+repDBID+genREP+repID); 
    $('#repTabs').tab(); //initialize tabs 
}); 
+0

什麼是你的問題? id值沒有'#'。這只是爲了告訴一個CSS選擇器引擎,你正在尋找一個id值。它實際上並不存在於id值中。 – jfriend00

+0

好吧;當使用http://www.regextester.com/或rubular.com進行測試時;我得到了三組正則表達式模式匹配。組0 - 整個ID(如果它符合模式)。第1組 - 最初的9個字符的字母數字組。和第2組 - 連字符後的剩餘數字。我如何分別訪問這些組並使用它們來創建url(請參閱代碼)? – kevins

回答

0

從您的正則表達式的g,它應該只是罰款:

var baseURL = window.location.protocol + "//" + window.location.hostname + "/db/"; 
var genREP = "?a=API_GenResultsTable&qid="; 

$('#tab1 div').each(function(e) { // You might need `#tab1 > div` 
    var parts = this.id.match(/([a-z0-9]{9})-([1-9]{1}[0-9]*)/); 
    var repDBID = parts[1]; 
    var repID = parts[2]; 

    $(this).load(baseURL + repDBID + genREP + repID); 

    $('#repTabs').tab(); 
}); 

這裏就是我的意思是:

> id.match(/([a-z0-9]{9})-([1-9]{1}[0-9]*)/g); 
["bgjhkn2n2-20"] 
> id.match(/([a-z0-9]{9})-([1-9]{1}[0-9]*)/); 
["bgjhkn2n2-20", "bgjhkn2n2", "20"] 
+0

它的工作原理!謝謝! – kevins

+0

嗯,當我在Firebug中運行我的代碼或類似的編輯版本的代碼時;它工作並加載tab1的內容---但在頁面加載它不起作用。有任何想法嗎? – kevins

+0

沒關係;我的代碼中有錯誤。 – kevins

相關問題