2012-10-02 2 views
0

Я пытаюсь написать JavaScript, где я могу передать путь к URL текущей страницы другой функции; хотел бы добавить его как значение в пользовательскую переменную для Google Analytics. Однако, поскольку я не знаю JavaScript, я подумал, что лучше всего проверить, могу ли я передать переменную в простое предупреждение. Увы, я не могу. Я проверил несколько сообщений на этом сайте и не могу заставить это работать. Некоторые из нитей я проверенными являются:Переменная не переходит к функции

need to pass variable to function
How to pass this variable to this function?
Pass variable to external javascript?

Я также попытался Google и некоторые учебники JavaScript, и играть с одиночными, двойные кавычки, скобки, и т.д .. ничего не работает. Может ли кто-нибудь помочь? Спасибо.

  <script type="text/javascript"> 
      $(document).ready(function() { 
       var pdpURL = window.location.pathname; 
      }); 
      function popup() { 
       alert('pdpURL'); 
      } 
      </script> 

Всплывающее окно появляется, но в нем просто указывается pdpURL, а не URL.

ответ

2

Прежде всего, вам не нужны кавычки вокруг имени переменной, когда вы его называете. Во-вторых, эта переменная привязана к функции $(document).ready() и, как таковая, не будет доступна для вашей другой функции. Эта переменная должна быть глобальной, чтобы вы могли это сделать, что вы можете сделать, объявив переменную вне своих функций.

+1

Спасибо, это решило! Я очень ценю ваше объяснение, так как это помогает мне больше узнать о синтаксисе JavaScript. Теперь я могу спать сегодня :) – surfbird0713

+0

Это нормально, рад помочь! –

0

Вам необходимо заменить одиночные кавычки. Попробуйте alert(pdpURL)

4

Несколько проблем:

  • вы не призывающих popup

  • pdpURL является локальной для обработчика, но popup глобальна

  • alert получает строку, не переменная ссылка


$(document).ready(function() { 
    var pdpURL = window.location.pathname; 

    function popup() { 
     alert(pdpURL); 
    } 

    popup(); 
}); 
1

Попробуйте это:

<script type="text/javascript"> 
      function popup(path) { 
       alert(path); 
      } 
      $(document).ready(function() { 
       var pdpURL = window.location.pathname; 
       popup(pdpURL); 
      }); 
      </script> 
0

Конечно, это не сработает.

Если вы представить себе функцию, и их переменные, как коробки, то у вас есть переменный внутри одной коробки, которые не могут видеть другие

$(document).ready(function() { 
    var pdpURL = window.location.pathname; 
}); 
function popup() { 
    alert('pdpURL'); 
} 

У вас есть два варианта.

  • шаг popURL на глобальном уровне
  • ход всплывающей внутри вашей анонимной функции

Пример 1

var pdpURL; 
+------------------------------------------ 
| // This is box 1, an anonymous function| 
| // can see pdpURL      | 
+------------------------------------------ 

+------------------------------------------ 
| // This is box 2 called popup   | 
| // Can't see anything inside box 1  | 
| // But can also see pdpURL    | 
+------------------------------------------ 

Пример 2

+------------------------------------------ 
| // This is box 1, an anonymous function| 
| var pdpURL        | 
| +----------------------------------+ | 
| | // This is box 2 called popup | | 
| | // Can see inside box 1   | | 
| +----------------------------------+ |  
|           | 
+------------------------------------------ 
0

Вам нужно учитывать, что $ (document) .ready(); будет срабатывать только после завершения загрузки всей страницы.

Это означает, что код после этого может действительно исправить до того, как страница закончит загрузку.

Вы всегда должны учитывать порядок событий, когда смотрите порядок выполнения.

Смежные вопросы