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,
только непонятно, зачем такое создание картинок нужно, если они потом нигде не используются. Кэширование разве что.

percilacus 04.05.2009 16:31

На моем сайте используецоо!
http://percilacus.narod.ru/

Kolyaj 04.05.2009 16:46

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

percilacus 04.05.2009 17:09

Kolyaj, так не работает!
Да и в принципе не может работать

Kolyaj 04.05.2009 17:18

Цитата:

Сообщение от percilacus
Да и в принципе не может работать

Это почему это?

x-yuri 04.05.2009 23:33

Цитата:

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

percilacus 06.05.2009 20:46

Цитата:

Сообщение от Kolyaj
Да и в принципе не может работать

Потому что создано свойство src, а сам объект то не создан.
А вот так работает. Мне даже так больше нравится:
function create() {
    for (var i = 0; i < arguments.length; i++) {
window [arguments[i]] = new Image();
window [arguments[i]].src = 'Images/' + arguments[i] + '.gif';
    }
}
create('SoapRed', 'SoapGreen', 'HomeRed', 'HomeGreen');

Kolyaj 06.05.2009 20:55

Цитата:

Сообщение от percilacus
Потому что создано свойство src, а сам объект то не создан.

А свойство какого объекта создано?

twolf 07.05.2009 14:04

Kolyaj,
а после new Image().src = ....
искать свойство src в document.images ?

Kolyaj 07.05.2009 14:21

А оно нигде потом и не ищется. Я не тестировал кэширование подобным образом, так что очень даже может быть, что не работает. Хотя в случае ТС я смутно представляю, как он тестирует работоспособность. А вот если нужно отправить какие-то данные на сервер, то такой подход прекрасно работает.


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