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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
miha25
Отправлено: 17 Декабря, 2015 - 20:51:57
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


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




Здравствуйте!

Прошу помогите, уже голову сломал

Есть скрипт который генерирует хештеги в строке url:

CODE (javascript):
скопировать код в буфер обмена
  1. Hash = {
  2.         // Получаем данные из адреса
  3.         get: function() {
  4.                 var vars = {}, hash, splitter, hashes;
  5.                 if (!this.oldbrowser()) {
  6.                         var pos = window.location.href.indexOf('?');
  7.                         hashes = (pos != -1) ? decodeURIComponent(window.location.href.substr(pos + 1)) : '';
  8.                         splitter = '&';
  9.                 }
  10.                 else {
  11.                         hashes = decodeURIComponent(window.location.hash.substr(1));
  12.                         splitter = '/';
  13.                 }
  14.  
  15.                 if (hashes.length == 0) {return vars;}
  16.                 else {hashes = hashes.split(splitter);}
  17.  
  18.                 for (var i in hashes) {
  19.                         if (hashes.hasOwnProperty(i)) {
  20.                                 hash = hashes[i].split('=');
  21.                                 if (typeof hash[1] == 'undefined') {
  22.                                         vars['anchor'] = hash[0];
  23.                                 }
  24.                                 else {
  25.                                         vars[hash[0]] = hash[1];
  26.                                 }
  27.                         }
  28.                 }
  29.                 return vars;
  30.         }
  31.        
  32. };


C помощью функции выше я получаю параметры заданого хештега.

допустим url: http://site[dot]com?value=1

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var hash = Hash.get();
  3. alert(hash.value); // 1
  4.  


Но когда у меня переменная которой присвоен название хештега:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var a = 'value';
  3. alert(hash.a); // undefined
  4.  


понимаю что решение простое, но знаний не хватает, поэтому прошу помочь.
 
 Top
SAD
Отправлено: 17 Декабря, 2015 - 21:12:29
Post Id



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


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




вопрос непонятен
 
 Top
miha25
Отправлено: 17 Декабря, 2015 - 21:22:26
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


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




SAD пишет:
вопрос непонятен


Даже не знаю как лучше объяснить ситуацию

С помощью функции ниже я получаю параметры url:

CODE (javascript):
скопировать код в буфер обмена
  1.     Hash = {
  2.             // Получаем данные из адреса
  3.             get: function() {
  4.                     var vars = {}, hash, splitter, hashes;
  5.                     if (!this.oldbrowser()) {
  6.                             var pos = window.location.href.indexOf('?');
  7.                             hashes = (pos != -1) ? decodeURIComponent(window.location.href.substr(pos + 1)) : '';
  8.                             splitter = '&';
  9.                     }
  10.                     else {
  11.                             hashes = decodeURIComponent(window.location.hash.substr(1));
  12.                             splitter = '/';
  13.                     }
  14.      
  15.                     if (hashes.length == 0) {return vars;}
  16.                     else {hashes = hashes.split(splitter);}
  17.      
  18.                     for (var i in hashes) {
  19.                             if (hashes.hasOwnProperty(i)) {
  20.                                     hash = hashes[i].split('=');
  21.                                     if (typeof hash[1] == 'undefined') {
  22.                                             vars['anchor'] = hash[0];
  23.                                     }
  24.                                     else {
  25.                                             vars[hash[0]] = hash[1];
  26.                                     }
  27.                             }
  28.                     }
  29.                     return vars;
  30.             }
  31.            
  32.     };


Для примера берем url: http://site[dot]com?value=1

Когда получаю вот так значие value:

CODE (javascript):
скопировать код в буфер обмена
  1. var hash = Hash.get();
  2. alert(hash.value); // 1


alert отображает 1, значение value из строки url

но когда получаю вот так, не напрямую прописываю название параметра(хештега), а через переменную

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var hash = Hash.get();
  3. var a = 'value';
  4. alert(hash.a); // undefined


alert отображает undefined, почему-то не понимает что нужно получить значение value из строки url

(Отредактировано автором: 17 Декабря, 2015 - 21:34:51)

 
 Top
SAD
Отправлено: 17 Декабря, 2015 - 22:08:02
Post Id



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


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




понял

hash[a]

(Отредактировано автором: 17 Декабря, 2015 - 22:08:51)

 
 Top
miha25
Отправлено: 17 Декабря, 2015 - 22:12:33
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


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




SAD пишет:
понял

hash[a]


теперь другая проблемка

у меня идет массив

CODE (javascript):
скопировать код в буфер обмена
  1. a[0]=value;
  2. a[1]=value1;
  3. a[2]=value2;


как тогда прописать? hash[a[0]] не работает
(Добавление)
SAD пишет:
понял

hash[a]


Все, разобрался, спасибо за помощь
 
 Top
SAD
Отправлено: 17 Декабря, 2015 - 22:17:56
Post Id



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


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




не работает - мне ничего не говорит. какая ошибка в консоли браузера?

value - это у Вас другая переменная или строка, которую Вы не обрамили кавычками?
 
 Top
miha25
Отправлено: 17 Декабря, 2015 - 22:20:26
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


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




SAD пишет:
не работает - мне ничего не говорит. какая ошибка в консоли браузера?

value - это у Вас другая переменная или строка, которую Вы не обрамили кавычками?


Спасибо за помощь, разобрался, все заработало, чтобы я без Вас делал.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 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