0

要素 ID を持つ DIV があります。例: "bgjhkn2n2-20"。IDに基づいてレポートをdivに動的にロードできるように、正規表現を正しく取得しようとしています。

console.log(elemID) は、期待どおりに bgjhkn2n2-20 を出力します。通常、要素 ID の前に付けられる # は出力されません。console.log(repDBID[0])完全な要素 ID を出力します。しかし、同様のテストから取得したグループを regextester で印刷するために firebug を取得することはできませんconsole.log(repDBID[0])。match ステートメントにインデックス番号を追加すると、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
});
4

1 に答える 1

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"]
于 2012-10-23T21:50:36.180 に答える