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
Форумы портала PHP.SU :: Версия для печати :: как вернуть значение из влошенй функции
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » как вернуть значение из влошенй функции

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

1. PATCH - 20 Августа, 2013 - 00:53:00 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. <html>
  2.  <head>
  3.   <title>Заголовок страницы</title>
  4.   <!-- Подключаем JavaScript'овый скрипт с названием current_script.js -->
  5.   <script type='text/javascript' src='http://vk.com/js/api/xd_connection.js?2'></script>
  6.  </head>
  7.  <body>
  8. <script>
  9. function js_vk_init () { VK.api("friends.getAppUsers",{},function(data){
  10.  arr =data.response ;
  11.  str=arr.length;
  12.  return str.ToString;
  13. });   }
  14.  
  15. </script>
  16. <input type="button" onclick="alert(js_vk_init())" value="Считать кролей!"/>
  17.  </body>
  18. </html>

собствено вопрос как вернуть значение из вложеной функции? при
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  function js_vk_init () { VK.api("friends.getAppUsers",{},function(data){
  3.  arr =data.response ;
  4.  str=arr.length;
  5.  alert( str.ToString);
  6. });


все идеально выводит, но мне нужно вернуть полученое значение ввиде строки или числа (по сути в переменой число) когда я использую самый первый код - выводит undefined - что посути означает значение отсутствует)
2. teddy - 20 Августа, 2013 - 01:26:40 - перейти к сообщению
Попробуйте заменить
CODE (javascript):
скопировать код в буфер обмена
  1. return str.ToString;

на:
CODE (javascript):
скопировать код в буфер обмена
  1. return str.toString();
3. PATCH - 20 Августа, 2013 - 08:32:12 - перейти к сообщению
[quote=teddy][/quote]тоже самое) а не не тоже самое на твой return str.toString(); ругается на синтаксическую ошибку)))
4. IllusionMH - 20 Августа, 2013 - 11:07:06 - перейти к сообщению
PATCH, подозреваю, что это асинхронная функция. Тогда из нее нельзя вернуть данные в синхронный код.
Курите в сторону Promises и jQuery.Deferred()
5. PATCH - 20 Августа, 2013 - 14:08:27 - перейти к сообщению
нехочу как то вглублятся в эти танцы с бубонами и создал просто алгоритм) создал тэг, создал ему атрибут, записал значение атрибута, и потом из основной функции считываю атрибут этого тега и возвращаю значение, вот тока работает не с первого раза а со второго т.к сначало испольняется getAttribute кто подскажит в чем проблема (в js слабоват) но пологике код исполняется сверху в низ

CODE (htmlphp):
скопировать код в буфер обмена
  1. <html>
  2.  <head>
  3.   <title>Заголовок страницы</title>
  4.   <!-- Подключаем JavaScript'овый скрипт с названием current_script.js -->
  5.   <script type='text/javascript' src='http://vk.com/js/api/xd_connection.js?2'></script>
  6.  </head>
  7.  <body>
  8. <script>
  9.  
  10. function js_vk_init () {
  11. VK.api("friends.getAppUsers",{},function(data){
  12. arr =data.response ;
  13. str=arr.length;
  14.  
  15. var elements = document.createElement('div');
  16.  
  17.         elements.setAttribute('style',  'display: none') ;
  18.         elements.setAttribute('numbers',  str) ;
  19.                    
  20.         document.getElementsByTagName('body')[0].appendChild(elements);
  21. });
  22.         znak = document.getElementsByTagName('div')[0].getAttribute('numbers');
  23.         return znak;
  24. }
  25.  
  26.  
  27. </script>
  28. <input type="button" onclick="alert(js_vk_init())" value="GO"/>
  29.  </body>
  30. </html>


ошибку выдает : Uncaught TypeError: Cannot call method 'getAttribute' of undefined на первый раз если кликнуть нечего, на второй раз выдаст значение полученого из атрибута numbers
6. IllusionMH - 20 Августа, 2013 - 14:17:17 - перейти к сообщению
PATCH, повторяю.
Это асинхронная функция, и обработчик сработает позже чем строки, которые идут сразу после него.
Вы еще не создали элемент, а пытаетесь считать его невалидный атрибут.
Все нужно переносить в callback

 

Powered by ExBB FM 1.0 RC1