2009-12-01 2 views
0

У меня есть функция JsПрисваивание в JavaScript

Я хочу, чтобы назначить переменную в переменную

моя переменная находится в forloop

У меня есть две переменные

т.е.;

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

ниже моя функция 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') 

} 
} 

моя проблема здесь

var theurl=spcd_+i; 

Я хочу изменить theurl значение spcd_1 и spcd_2

как правильно назначить этот петля для обработки

var theurl=spcd_+i; 

Может ли кто-нибудь показать мне правильный метод.

Благодаря

ответ

0

Похоже, вы хотите индексировать массив, а не пытаться конкатенацию себя имя переменной. Вот ваш код изменен

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') 

    } 
} 

Просто для смеха, вот как вы можете продолжать использовать конкатенацию, чтобы добраться до имени переменной. Объекты в JavaScript могут быть также associative arrays, то есть вы можете использовать синтаксис массива для создания и извлечения произвольных свойств

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

Я думаю, вы должны просто поставить все адреса в массиве, и цикл через него по индексу.

Javascript не позволяет использовать строку для имитации имя переменной, таким образом, создать массив

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

и в течение цикла, цикла она

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

На самом деле, JavaScript разрешает это. – Nosredna

+0

Использование eval()? – futureelite7

+0

Нет, см. Мой ответ ниже. – Nosredna

5

Вы должны использовать массив , например:

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

Возможно, вы также должны прочитать книгу о Javascript.

0

Попробуйте следующий фрагмент кода:

var my_var = "spcd_" + i; 
+1

Это просто назначит переменную строкой «spcd_n», где n - это текущее число. Это не будет делать то, чего хочет ассер. – futureelite7

0

С помощью глобальной переменной, вы могли бы сделать

window["theurl_"+i]; 

, поскольку глобальные переменные свойства окна , и вы можете получить свойства с нотной меткой или обозначением скобки.

Но не делайте этого.:-)

Хорошая причина, по которой даже не пытаться делать то, что вы делаете, заключается в том, что JavaScript не имеет блочного охвата, поэтому размещение варсов в любом месте, но в начале функций может привести к путанице. Вы рано или поздно попадаете в неприятности, если поместите объявления переменных в начале циклов или условных блоков.