Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Строковый литерал в переменную (https://javascript.ru/forum/events/3526-strokovyjj-literal-v-peremennuyu.html)

percilacus 29.04.2009 21:56

Строковый литерал в переменную
 
Здравствуйте, господа форумчане!
Заморочился я на одном скрипте. Проблема упирается в то,
чтобы строку сделать переменной, т.е.
var x = "_string"
а потом то что в кавычках чтобы стало переменной, т.е.
_string = .....
Чтобы стало яснее вот неработающий скрипт для предварительной подгрузки изображений:
Код:

<SCRIPT>
function create (obj) {
eval(obj) = new Image();
eval(obj + ".src") = "Images/" + obj + ".gif" }

create ("SoapRed"); create("SoapGreen");.....
</SCRIPT>

Вставкой eval мной делается попытка превратить строку "SoapRed" в переменную SoapRed

Kolyaj 29.04.2009 22:34

Цитата:

Сообщение от percilacus
Вставкой eval мной делается попытка превратить строку "SoapRed" в переменную SoapRed

Зачем?

Gvozd 30.04.2009 00:13

window[obj]

x-yuri 30.04.2009 01:21

да и вообще, зачем они в глобальной области видимости

percilacus 30.04.2009 12:34

Цитата:

Сообщение от Gvozd (Сообщение 17897)
window[obj]

О, спасибо!
Скрипт работает.
Код:

function create (obj) {
window [obj] = new Image();
window [obj].src = "Images/" + obj + ".gif" }

create ("SoapRed"); create ("SoapGreen")

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

Kolyaj 30.04.2009 13:03

Цитата:

Сообщение от percilacus
Отличный изящный скрипт у нас с вами получился для предварительной подгрузки изображений

Больше никому об этом не рассказывай.

Gvozd 30.04.2009 14:11

Цитата:

Сообщение от Kolyaj
ольше никому об этом не рассказывай.

:lol:
+1

percilacus 02.05.2009 18:20

Или окончательно:
Код:

function create (obj) {
for (i=0; i < obj.length; ++i) {
window [obj[i]] = new Image();
window [obj[i]].src = "Images/" + obj[i] + ".gif" }
}
create (["SoapRed", "SoapGreen", "HomeRed", "HomeGreen"])


x-yuri 04.05.2009 01:59

я бы предложил
function create() {

    var imgs = [];
    for( var i=0; i<arguments.length; i++ ) {
        imgs[i] = new Image();
        imgs[i].src ='Images/' + arguments[i] + '.gif';
    }
}
create ( 'SoapRed', 'SoapGreen', 'HomeRed', 'HomeGreen' );

Kolyaj 04.05.2009 12:09

x-yuri,
только непонятно, зачем такое создание картинок нужно, если они потом нигде не используются. Кэширование разве что.


Часовой пояс GMT +3, время: 05:18.