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 [2]

 PHP.SU

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


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

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


Частый гость


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


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




Присвоен, когда я забираю id++, то
CODE (javascript):
скопировать код в буфер обмена
  1. alert(data.getData('some_key', 0));
выводит последнее значение в цикле, не могу понять, почему так происходит


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



Частый гость


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


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




Maskca, почитай про области видимости переменных в javascript
Ты объявляешь объект и присваиваешь ему свойства в функции, а достать свойства из этого объекта хочешь в глобальной области. а там нет ни этого объекта, ни тем паче его свойств.
И кста, где у тебя вызов someEvent() ?
(Добавление)
А нет, объект data глобален...
Но что-то у тебя с областью видимости стопудофф. Попробуй так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function someEvent()
  3.  
  4. {
  5.  
  6.  data = new Data();
  7.  
  8.  id = 0;
  9.  
  10.  здесь цикл
  11.  
  12. {
  13.  
  14.  data.SetData('some_data', 'some_key', id);
  15.  
  16.  id++;
  17.  
  18. }
  19.  
  20.  
  21.  
  22. }
  23.  
  24. function Data()
  25.  
  26. {
  27.  
  28.         this.myData= {};
  29.  
  30.         this.setData = function(data, key, id){
  31.  
  32.                 this.myData[key] = {};
  33.  
  34.                this.myData[key][id] = data;
  35.  
  36.         };
  37.  
  38.         this.getData = function(key, id){
  39.  
  40.                 return this.myData[key][id];
  41.  
  42.         };
  43.  
  44.  
  45.  
  46. }
  47.  
  48.  
  49.  
  50. alert(data.getData('some_key', 1));
  51.  


И кста, цикл у тебя точно в несколько итераций? Может тока одну с id = 0 проходит и завершается? Почему ты его в листинге не привел?
 
 Top
Maskca
Отправлено: 08 Июля, 2012 - 23:42:19
Post Id


Частый гость


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


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




сначала вызывается someEvent() в html файле, объявляется объект, потом в его свойства записываются данные в цикле, после этого я отдельной функцией вызываю getData('some_key', 0)
(Добавление)
Дело в том, что даже с одной итерацией, мне бы вывело значение :
CODE (javascript):
скопировать код в буфер обмена
  1. alert(data.getData('some_key', 0));
, а оно мне дает undefined


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



Частый гость


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


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




Держи.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function someEvent()
  3. {
  4.  data = new Data();
  5.  id = 0;
  6. while(id<5)
  7. {
  8.  data.setData('some_data', 'some_key', id);
  9.  id++;
  10. }
  11. }
  12.  
  13. function Data()
  14.  
  15. {
  16.         this.myData = {};
  17.  
  18.         this.setData = function(data, key, id){
  19.                 if(typeof this.myData[key] != 'undefined') {
  20.                   this.myData[key][id] = data;
  21.                 }else{
  22.                   this.myData[key] = {};
  23.                   this.myData[key][id] = data;
  24.                 }
  25.         }
  26.         this.getData = function(key, id){
  27.                 return this.myData[key][id];
  28.         }
  29. }
  30.  
  31. someEvent();
  32.  
  33. alert(data.getData('some_key', 3));
  34.  


Код рабочий, модифицируешь сам как надо.
 
 Top
Maskca
Отправлено: 09 Июля, 2012 - 22:05:14
Post Id


Частый гость


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


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




Точно, оно же у меня при каждом вызове функции создавало пустой объект, и поэтому можно было вытащить только последний элемент.
Большое спасибо!


-----
http://view-tv[dot]ru - Бесплатное телевидение, кино, радио
 
 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