我有一个sharepoint站点,并且想要为具有非硬编码的查询字符串值的链接创建脚本,因此我可以在几个站点上使用它而不必更改它。 HTML是一团糟,我无法改变它。
我有一些图表链接到包含更多详细信息的页面。在带有图表的页面上,我有一些过滤器,当用户选择其中一个时,页面重新加载,然后url包含查询字符串值。
使用javascript我希望图表根据查询字符串值获取链接,因此包含更多详细信息的页面反映了用户在过滤器中选择的内容。
图表中的链接看起来像 http://mysite.com/details.aspx?filter=train
要获得此链接,我有一个使用此
创建它们的脚本goPage[0]= baseURL + filter[queryString];
goPage[1]= baseURL + filter[queryString];
我已经知道可能的查询字符串值(最多10个)所以我在数组中对它们进行了硬编码
filter[1] = 'road';
filter[2] = 'train';
filter[4] = 'horse';
所以我的问题是,如果我事先不知道查询字符串值,我该怎么做呢?
链接在html文档中动态添加,我得到所有可能的查询字符串值:
var businessUnitID = new Array();
$('.table404').children().children().each(function(){
var link = ($(this).find('a').attr('href'));
var startIndex = link.indexOf(",'");
var endIndex = link.indexOf("');");
if ( startIndex >= 0 && endIndex >= 0 ) {
var linkID = link.substring( startIndex+2, endIndex );
businessUnitID.push(linkID);
}
alert(businessUnitID);
});
有什么想法吗? 提前致谢
编辑:使用更多信息更新问题
获取queryString我使用以下代码:
//从查询字符串中获取过滤器ID
function gup( filter )
{
filter = filter.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+filter+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
var queryString = gup("SelectedID");
此外,我没有使用道路,火车等进行硬编码,而是使用
var businessUnitName = new Array();
$('.table404').children().children().each(function(){
var linkText = ($(this).find('a').text());
businessUnitName.push(linkText);
//alert(businessUnitName);
});
所以不要:
var filter = new Array();
filter[1] = businessUnitName[1];
filter[2] = businessUnitName[2];
filter[4] = businessUnitName[3];
filter[5] = businessUnitName[4];
filter[7] = businessUnitName[5];
filter[9] = businessUnitName[6];
filter[10] = businessUnitName[7];
filter[11] = businessUnitName[8];
filter[14] = businessUnitName[9];
filter[15] = businessUnitName[10];
我想,如果例如querystring值是businessUnitID数组中的第三个值,则将filter设置为businessUnitName [3];
我希望我在这里说清楚,请问你是否还有其他问题。
答案 0 :(得分:0)
我不确定你错过了什么。你不能这样做:
for(var i=0; i < businesUnitID.length; i++) {
goPage[i] = baseURL + businesUnitID[i];
}
但是,您可以在将linkID推送到businessUnitID时添加baseURL:
如果您需要将businessUnitID与特定数字(0,1,2)相对应,那么我们需要有关如何匹配它们的更多信息。
编辑:根据您的附加信息:
我会修改你收集businesUnitIDs的方式......
var businessUnitID = new Array();
var i=0;
$('.table404').children().children().each(function(){
var link = ($(this).find('a').attr('href'));
var startIndex = link.indexOf(",'");
var endIndex = link.indexOf("');");
if ( startIndex >= 0 && endIndex >= 0 ) {
var linkID = link.substring( startIndex+2, endIndex );
businessUnitID[linkID] = i;
i++;
}
});
然后你可以使用filter = businesUnitName[businesUnitID[queryString]];
。