Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Объекты в javascript

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Maskca
Отправлено: 08 Июля, 2012 - 16:07:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 167
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Здравствуйте, подскажете, почему так не работает:
CODE (javascript):
скопировать код в буфер обмена
  1. setData('some data', 'someKey')
  2. function setData(data, key)
  3. {
  4.  var myData = {
  5.                 key : data
  6.         };
  7. alert(myData['someKey']);
  8. }

В алерте мне выдает undefined, что я сделал не так?


-----
http://view-tv[dot]ru - Бесплатное телевидение, кино, радио
 
 Top
Bio man
Отправлено: 08 Июля, 2012 - 17:02:58
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Ключи не могут быть переменными.
Правильно так
CODE (javascript):
скопировать код в буфер обмена
  1. setData('some data', 'someKey')
  2. function setData(data, key)
  3. {
  4.  var myData = {};
  5.  myData[key] = data;
  6.  alert(myData['someKey']);
  7. }
 
 Top
Maskca
Отправлено: 08 Июля, 2012 - 19:06:46
Post Id


Частый гость


Покинул форум
Сообщений всего: 167
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




А можно ли получить доступ к этим данным из других функций, например я пробую так:
CODE (javascript):
скопировать код в буфер обмена
  1. setData('some data', 'someKey')
  2. function setData(data, key)
  3. {
  4.  this.myData = {};
  5.  this.myData[key] = data;
  6. }
  7. function getData()
  8. {
  9.  get = new setData();
  10.  alert(get.myData['someKey']);
  11. }
  12.  

Но так не работает


-----
http://view-tv[dot]ru - Бесплатное телевидение, кино, радио
 
 Top
Anguis
Отправлено: 08 Июля, 2012 - 19:57:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




Maskca, так не сработает, потому что при вызове get = new setData(); не передается ни каких параметров. У вас get получается новым пустым объектом.. Стоп. Он вообще не объект.
По идее должно работать так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. get = setData('some data', 'someKey');
  3.  
  4. function setData(data, key)
  5.  
  6. {
  7.  
  8.  this.myData = {};
  9.  
  10.  this.myData[key] = data;
  11.  
  12.  return this;
  13.  
  14. }
  15.  
  16. function getData()
  17.  
  18. {
  19.  
  20.  alert(get.myData['someKey']);
  21.  
  22. }
  23.  
  24.  
  25.  
 
 Top
Bio man
Отправлено: 08 Июля, 2012 - 19:59:09
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Ну во первых тут
CODE (javascript):
скопировать код в буфер обмена
  1. get = new setData();
создается пустой объект.
Лучше так
CODE (javascript):
скопировать код в буфер обмена
  1. function Data()
  2. {
  3.         this.myData = {};
  4.         this.setData = function(data, key){
  5.                 this.myData[key] = data;
  6.         };
  7.         this.getData = function(key){
  8.                 return this.myData[key];
  9.         }
  10.  
  11. }
  12. var data = new Data();
  13. data.setData('some data', 'someKey');
  14. alert(data.getData('someKey'));

(Отредактировано автором: 08 Июля, 2012 - 20:19:23)

 
 Top
Maskca
Отправлено: 08 Июля, 2012 - 20:14:11
Post Id


Частый гость


Покинул форум
Сообщений всего: 167
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Супер, большое спасибо!


-----
http://view-tv[dot]ru - Бесплатное телевидение, кино, радио
 
 Top
Anguis
Отправлено: 08 Июля, 2012 - 20:21:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




Что-то я лабуду написал... Нехер по выходным работать!)
вообщет в яваскрипте объекты создаются динамически. Можно использовать и такой синтаксис как у вас, но я таким ни когда не пользовался.
Вот так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. get = {}
  3. get.setData = function (key,data){
  4.  this[key] = data;
  5. }
  6.  
  7. get.setData('somekey','somedata')
  8.  
  9. function getData(){
  10.  alert(get.somekey)
  11. }
  12.  
  13. getData();
  14.  
  15.  

(Добавление)
А, уже написали))
 
 Top
Maskca
Отправлено: 08 Июля, 2012 - 22:03:33
Post Id


Частый гость


Покинул форум
Сообщений всего: 167
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Подскажите, когда я здесь
CODE (javascript):
скопировать код в буфер обмена
  1. var id;
  2. data.setData('some data', 'someKey', id);
  3. id++;
еще id ставлю, то мне тоже почему то ошибку выдает, а если число то все норм, я делал так:
CODE (javascript):
скопировать код в буфер обмена
  1. function Data()
  2. {
  3.         this.myData = {};
  4.         this.setData = function(data, key, id){
  5.                 this.myData[key] = {};
  6.                 this.myData[key][id] = data;
  7.         };
  8.         this.getData = function(key, id){
  9.                 return this.myData[key][id];
  10.         }
  11.  
  12. }
  13. var data = new Data();
  14. data.setData('some data', 'someKey', id);
  15. alert(data.getData('someKey', 2));


-----
http://view-tv[dot]ru - Бесплатное телевидение, кино, радио
 
 Top
Anguis
Отправлено: 08 Июля, 2012 - 22:16:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




Maskca, а разве id проинициализировать не надо?
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var id = 0;
  3.  
  4. data.setData('some data', 'someKey', id);
  5.  
  6. id++;
  7.  

А то вы его объявили, а значение ему не дали. Естественно он и ругается.
(Добавление)
Кстати можно обойтись и без метода getData

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function Data()
  3.  
  4. {
  5.  
  6.         this.myData = {};
  7.  
  8.         this.setData = function(data, key, id){
  9.  
  10.                 this.myData[key] = {};
  11.  
  12.                 this.myData[key][id] = data;
  13.  
  14.         };
  15.  
  16.  
  17.  
  18. }
  19.  
  20. var.id = 2;
  21.  
  22. var data = new Data();
  23.  
  24. data.setData('some data', 'someKey', id);
  25.  
  26. alert(data.myData.someKey[2]);
  27.  

(Добавление)
Да и без setData:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. data.myData = {}
  3. data.myData[key] = {}
  4. data.myData[key][id] = data;
  5.  

или просто
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. data.myData[key][id] = data;
  3.  
 
 Top
Maskca
Отправлено: 08 Июля, 2012 - 22:53:55
Post Id


Частый гость


Покинул форум
Сообщений всего: 167
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Anguis пишет:
Maskca, а разве id проинициализировать не надо?

Я его инициализировал, просто здесь написать забыл. Но при вызове getData, мне выдает undefined


-----
http://view-tv[dot]ru - Бесплатное телевидение, кино, радио
 
 Top
Anguis
Отправлено: 08 Июля, 2012 - 23:01:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




Мой код в предыдущем сообщении работает.
Вот этот:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function Data()
  3. {
  4.         this.myData = {};
  5.         this.setData = function(data, key, id){
  6.                 this.myData[key] = {};
  7.                 this.myData[key][id] = data;
  8.         };
  9. }
  10. var.id = 2;
  11. var data = new Data();
  12. data.setData('some data', 'someKey', id);
  13. alert(data.myData.someKey[2]);
  14.  


Можете его использовать, но если вам очень нужны методы, ща разберемся в вашем коде)
(Добавление)
Ваш код тоже работет, тока я поставил id проинициализировал.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function Data()
  3.  
  4. {
  5.  
  6.         this.myData = {};
  7.  
  8.         this.setData = function(data, key, id){
  9.  
  10.                 this.myData[key] = {};
  11.  
  12.                 this.myData[key][id] = data;
  13.  
  14.         };
  15.  
  16.         this.getData = function(key, id){
  17.  
  18.                 return this.myData[key][id];
  19.  
  20.         }
  21.  
  22.  
  23.  
  24. }
  25.  
  26. var id = 2;//вот тут инициализируем id
  27.  
  28. var data = new Data();
  29.  
  30. data.setData('some data', 'someKey', id);
  31.  
  32. alert(data.getData('someKey', 2));
  33.  
 
 Top
Maskca
Отправлено: 08 Июля, 2012 - 23:08:06
Post Id


Частый гость


Покинул форум
Сообщений всего: 167
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




когда я ставлю id = 0 или другое число, то у меня тоже работает, но когда id++, то почему то нет.


-----
http://view-tv[dot]ru - Бесплатное телевидение, кино, радио
 
 Top
Anguis
Отправлено: 08 Июля, 2012 - 23:11:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




Maskca, выложи весь код...
 
 Top
Maskca
Отправлено: 08 Июля, 2012 - 23:23:32
Post Id


Частый гость


Покинул форум
Сообщений всего: 167
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. function someEvent()
  2. {
  3.  data = new Data();
  4.  var id = 0;
  5.  здесь цикл
  6. {
  7.  data.SetData('some_data', 'some_key', id);
  8.  id++;
  9. }
  10.  
  11. }
  12. function Data()
  13. {
  14.         this.myData= {};
  15.         this.setData = function(data, key, id){
  16.                 this.myData[key] = {};
  17.                this.myData[key][id] = data;
  18.         };
  19.         this.getData = function(key, id){
  20.                 return this.myData[key][id];
  21.         };
  22.  
  23. }
  24.  
  25. alert(data.getData('some_key', 1));
  26.  

(Отредактировано автором: 08 Июля, 2012 - 23:24:36)



-----
http://view-tv[dot]ru - Бесплатное телевидение, кино, радио
 
 Top
Anguis
Отправлено: 08 Июля, 2012 - 23:27:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




Я больше чем уверен что id у тебя не присвоен. Инкремент (id++) можно поставить только для integer т.е. для целочисленного значения. Т.е. перед инкрементом полюбому должно быть присвоение id числа. Так:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var id;
  3. id++;
  4. alert(id);//не работает, вернет NaN
  5.  
  6. var id = 0;
  7. id++;
  8. alert(id); // работает, вернет 1
  9.  
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB