2010-06-30 21 views
0

我已經寫了一本bookmarlet來打開用戶定義的網頁鏈接,在這個特定的情況下,在UCSC基因組瀏覽器中的特定基因組位置。小書籤打開用戶定義的鏈接,並使用戶定義的表格下拉框選擇

javascript:d=%22%22+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);d=d.replace(/%5Cr%5Cn%7C%5Cr%7C%5Cn/g,%22%20,%22);if(!d)d=prompt(%22Enter%20the%20chromosomal%20location%20(ex.%20chr1:213243007-213243247):%22,%20%22%22);if(d!=null)location=%22http://genome.ucsc.edu/cgi-bin/hgTracks?hgS_doOtherUser=submit&hgS_otherUserName=Denilw&hgS_otherUserSessionName=mrkdOvrExpUniqMonometh&position=%22+escape(d).replace(/%20/g,%22+%22);void%200 

有人類基因組24條染色體可以顯示的,我想做到以下幾點:

1)解析染色體出了用戶輸入的字符串

使用java腳本中的正則表達式來解析chr22中的22:213243007-213243247或x來自chrX:213243007-213243247

2)在UCS表單的下拉選項中進行選擇C基於用戶輸入

對於22條染色體中的每條染色體,總共有88條染色體可以顯示4條軌跡或數據集。這些是可用於在定製選擇曲目UCSC基因組瀏覽器的部按照上述選擇的林克,說

http://genome.ucsc.edu/cgi-bin/hgTracks?hgS_doOtherUser=submit&hgS_otherUserName=Denilw&hgS_otherUserSessionName=mrkdOvrExpUniqMonometh&position=chr14%3A22%2C409%2C038-22%2C409%2C507

HS0356_chr_ 染色體 _duplicates_standard_len_triangle HS0445_dpwg_chr_chr 染色體 _duplicates_standard_len_triangle HS1328_chr_ 染色體 _duplicates_standard_len_triangle HS1329_dpwg_chr_chr 染色體 _dupli cates_standard_len_triangle

然後我想下拉菜單針對上述情況,其中染色體在第1部分被定義爲從隱藏改爲使得僅針對感興趣的染色體中的數據將被顯示。

也許這樣的事情將是有益的: http://www.codeproject.com/KB/scripting/autoselect.aspx

回答

1

對於你的第一個問題,

var str = "chr22:213243007-213243247"; 
var result = /chr(\w*):(\d*)-(\d*)/.exec(str); 
if(result) 
{ 
    alert(result[1]) // 22 
    alert(result[2]) // 213243007 
    alert(result[3]) // 213243247 
} 
else 
{ 
    // User entered invalid string 
    alert("Invalid input"); 
} 

如果您不需要result[2]result[3],不理會他們。

我看着你問題的第二部分(希望我的理解是正確的),而大部分的下拉列表的頁面看起來就像這樣:

<select name="ct_HS1329dpwgchrchr17duplicatesstandardlentriangle_5941" class="hiddenText" style="width: 70px"> 
    <option selected="">hide</option> 
    <option>dense</option> 
    <option>full</option> 
</select> 

現在,我們可以使用下面的代碼得到上述select元素,並將所選擇的選項設置爲「完全」(編輯:增加了一個解決辦法,因爲完整的元素名稱是無法預測的)

// Convert "chr17_duplicates_standard_len_triangle" to "chr17duplicatesstandardlentriangle" 
var selectText = "chr17_duplicates_standard_len_triangle"; 
var selectName = selectText.replace(/_/g, ""); 

// Find the element that contains "chr17duplicatesstandardlentriangle" in 
// it's name. 
var selectElements = document.getElementsByTagName("select"); 
for(var i=0;i<selectElements.length;i++) 
{ 
    var ele = selectElements[i]; 
    var name = ele.name; 
    if(name.indexOf(selectName)!==-1) 
    { 
     ele.selectedIndex = 2; 
     break; 
    } 
} 

,因爲它涉及到循環,我不喜歡這個解決方案通過頁面上的所有選擇元素,當你只需要一個。如果有人知道更好的解決方案,請告訴我。

希望能回答你的問題!

+0

這幾乎是完美的,但我不知道如何從下拉菜單的標籤(寫在下拉菜單上,例如HS1329_dpwg_chr_chr * CHROMOSOME * _duplicates_standard_len_triangle)轉到下拉菜單的實際編碼名稱(例如「ct_HS1329dpwgchrchr17duplicatesstandardlentriangle_5941」)使用javascript。 – 2010-07-06 16:51:24

+0

我認爲問題是名稱末尾的'_5941'。它似乎只是一個隨機數字。我會嘗試在我的代碼中添加解決方法。 – Na7coldwater 2010-07-06 18:43:19

+0

甜蜜,提前致謝 – 2010-07-06 18:58:21

相關問題