2009-12-01 5 views
0

J'ai une fonction jsAffectation d'une variable JavaScript

Je veux assigner une variable à une variable

ma variable est dans un forloop

J'ai deux variables

-à-dire;

var spcd_1= "http://www.colbridge.com"; 
var spcd_2 = "http://www.google.com"; 

ci-dessous est ma fonction js

function openNewWindow(spcd) { 
//alert("hello"); 
var tt = spcd; 
alert(tt); 
var i=0; 
var spcd_1= "http://www.colbridge.com"; 
var spcd_2 = "http://www.google.com"; 
for(i=1;i<3;i++) 
{ 
var theurl="'spcd_'+i"; 
popupWin = window.open(theurl, 
'_blank', 
'menubar, toolbar, location, directories, status, scrollbars, resizable, dependent, width=640, height=480, left=0, top=0') 

} 
} 

mon problème est ici

var theurl=spcd_+i; 

Je souhaite modifier theurl valeur spcd_1 et spcd_2

comment affecter ce correctement la boucle for

var theurl=spcd_+i; 

peut-on me montrer la bonne méthode.

Merci

Répondre

0

Sons comme vous voulez indexer un tableau, plutôt que d'essayer de vous concaténer un nom variable. Voici votre code modifié

function openNewWindow(spcd) { 
    //alert("hello"); 
    var tt = spcd; 
    alert(tt); 
    var i=0; 
    var spcds = []; 
    spcds.push("http://www.colbridge.com"); 
    spcds.push("http://www.google.com"); 
    for(i=0;i<spcds.length;i++) 
    { 
     var theurl=spcds[i]; 
     popupWin = window.open(theurl, 
     '_blank', 
     'menubar, toolbar, location, directories, status, scrollbars, resizable, dependent, width=640, height=480, left=0, top=0') 

    } 
} 

Juste pour rire, voici comment vous pouvez continuer à utiliser concaténation pour accéder à votre nom de variable. Les objets en javascript peuvent également être associative arrays, ce qui signifie que vous pouvez utiliser la syntaxe de tableau pour créer et récupérer des propriétés arbitraires

Avec une variable globale
var spcds = {}; 
    spcds['spcd_1'] = "http://www.colbridge.com"; 
    spcds['spcd_2'] = "http://www.google.com"; 
    //... 
    var theurl = spcds['spcd_' + i]; 
6

Je pense que vous devriez juste mettre tous les urls dans un tableau, et boucle à travers elle par index.

Javascript ne vous permet pas d'utiliser une chaîne pour simuler un nom de variable, donc créer un tableau

var urls = ["link1","link2","link3"]; //Add as many urls you need here 

et dans la boucle, en boucle

for (var i=0;i<urls.length;i++) { 
//logic here 
window.open(urls[i], '_blank', 
'menubar, toolbar, location, directories, status, scrollbars, resizable, dependent, width=640, height=480') 
//Do your thing 
} 
+0

En fait, JavaScript le permet. – Nosredna

+0

En utilisant eval()? – futureelite7

+0

Non, voir ma réponse ci-dessous. – Nosredna

5

Vous devez utiliser un tableau , comme ceci:

var urls = [ "http://www.colbridge.com", "http://www.google.com" ]; 

for(var i = 0; i < urls.length; i++) { 
    window.open(urls[i], '_blank', 
    'menubar, toolbar, location, directories, status, scrollbars, resizable, dependent, width=640, height=480') 
} 

Vous devriez probablement également lire un livre sur Javascript.

0

Essayez l'extrait suivant:

var my_var = "spcd_" + i; 
+1

Cela affectera simplement la variable avec la chaîne "spcd_n", où n est le nombre actuel. Cela ne fera pas ce que le demandeur veut. – futureelite7

0

, vous pourriez faire

window["theurl_"+i]; 

parce que les variables globales sont des propriétés de fenêtre , et vous pouvez obtenir des propriétés avec la notation par points ou la notation de parenthèse.

Mais ne faites pas cela.:-)

Une bonne raison de ne même pas essayer de faire ce que vous faites est que JavaScript n'a pas de portée de bloc, donc mettre des vars n'importe où mais au début des fonctions est susceptible de conduire à la confusion. Vous avez des problèmes tôt ou tard si vous mettez des déclarations de variables au début des boucles ou des blocs conditionnels.

Questions connexes