2010-08-12 8 views
0

J'ai un site sharepoint et je veux créer un script pour les liens avec des valeurs de chaîne querystring qui ne sont pas codées en dur afin que je puisse l'utiliser sur plusieurs sites sans avoir à le modifier. Le HTML est un gâchis et je ne peux pas le modifier.Remplacer les valeurs codées en dur dans un tableau avec des valeurs d'un autre tableau avec JavaScript?

J'ai quelques graphiques avec des liens vers une page avec plus de détails. Sur la page avec des graphiques j'ai quelques filtres et quand un utilisateur sélectionne l'un d'entre eux la page se recharge et l'URL contient alors une valeur de chaîne de requête. Avec javascript, je veux que les graphiques obtiennent des liens en fonction de la valeur de la chaîne de requête afin que la page avec plus de détails reflète ce que l'utilisateur a sélectionné dans le filtre.

Les liens des tableaux ressemble à quelque chose comme http://mysite.com/details.aspx?filter=train

Pour obtenir ce lien que j'ai un script qui les crée avec ce

goPage[0]= baseURL + filter[queryString]; 
goPage[1]= baseURL + filter[queryString]; 

Je sais que les valeurs querystring possibles déjà (max 10), de Je les ai codées en dur dans un tableau

filter[1] = 'road'; 
filter[2] = 'train'; 
filter[4] = 'horse'; 

ma question est, comment puis-je faire si je ne sais pas le Québec rystring valeurs au préalable?

Les liens sont ajoutés dynamiquement dans le document html et je reçois toutes les valeurs querystring possibles avec:

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); 
    }); 

Toutes les idées? Merci à l'avance

modifier: mis à jour la question avec plus d'informations

pour obtenir le queryString J'utilise le code suivant:

// obtenir l'ID de filtre de la chaîne de requête

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"); 

Aussi, au lieu d'avoir la route, le train etc. codé dur je l'obtiens avec

var businessUnitName = new Array(); 
    $('.table404').children().children().each(function(){ 
    var linkText = ($(this).find('a').text()); 
    businessUnitName.push(linkText); 
    //alert(businessUnitName); 
    }); 

Ainsi, au lieu d'avoir:

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]; 

Je veux, si par exemple la valeur querystring est la troisième valeur du tableau businessUnitID, filtre réglé sur businessUnitName [3];

J'espère que je me clarifierai ici, s'il vous plaît demander si vous avez d'autres questions.

+0

Je suis complètement confus avec cette question - est-il possible que vous puissiez publier un extrait du code HTML que vous essayez d'interroger ... et expliquer ce que vous voulez faire? – scunliffe

Répondre

0

Je ne suis pas sûr de ce qui vous manque. Tu ne peux pas le faire:

for(var i=0; i < businesUnitID.length; i++) { 
    goPage[i] = baseURL + businesUnitID[i]; 
} 

Cependant, vous pouvez simplement ajouter le baseURL en poussant linkID dans businessUnitID:

Si vous devez avoir businessUnitIDs correspondent à des numéros spécifiques (0,1,2), alors nous avons besoin de plus d'informations sur la façon de les faire correspondre.

EDIT: vous basé votre information ajoutée:

Je modifierais la façon dont vous recueillez les 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++; 
    } 
}); 

Ensuite, vous pouvez simplement utiliser filter = businesUnitName[businesUnitID[queryString]];.

+0

Salut Jhong, j'ai mis à jour la question à nouveau. – Peter

+0

OK, j'ai édité ma réponse :-) – Jhong

+0

désolé que voulez-vous dire quand vous dites "Alors vous pouvez simplement utiliser filter = businesUnitName [businesUnitID [queryString]];" ? – Peter

Questions connexes