Назначение переменных в JavaScript - PullRequest
0 голосов
/ 01 декабря 2009

У меня есть функция JS

Я хочу присвоить переменную переменной

моя переменная находится в цикле

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

т.е.,

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

как правильно назначить это в цикле for

var theurl=spcd_+i;

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

Спасибо

Ответы [ 5 ]

6 голосов
/ 01 декабря 2009

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

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

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

и в цикле for зациклите его

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
}
5 голосов
/ 01 декабря 2009

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

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 голосов
/ 01 декабря 2009

С глобальной переменной вы можете сделать

window["theurl_"+i];

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

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

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

0 голосов
/ 01 декабря 2009

Звучит так, будто вы хотите проиндексировать массив, а не пытаться объединить себя с именем переменной. Вот ваш код изменен

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 также могут быть ассоциативные массивы , что означает, что вы можете использовать синтаксис массива для создания и извлечения произвольных свойств

    var spcds = {};
    spcds['spcd_1'] = "http://www.colbridge.com";
    spcds['spcd_2'] = "http://www.google.com";
    //...
    var theurl = spcds['spcd_' + i];
0 голосов
/ 01 декабря 2009

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

var my_var = "spcd_" + i;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...