变量没有传递给函数

时间:2012-10-02 02:55:49

标签: javascript function variables

我正在尝试编写一些JavaScript,我可以将当​​前页面URL的路径传递给另一个函数;特别希望将其添加为Google Analytics自定义变量中的值。但是,由于我不知道JavaScript,我认为最好是看看我是否可以将变量传递给简单的警报。唉,我不能。我已经查看了这个网站上的几个帖子,但无法让它发挥作用。我检查过的一些主题是:

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

我也尝试了谷歌和一些JavaScript教程,并使用单引号,双引号,括号等...没有任何作用。有人可以帮忙吗?谢谢。

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

弹出窗口显示但它只是在其中显示pdpURL而不是URL。

6 个答案:

答案 0 :(得分:4)

几个问题:

  • 您没有致电popup

  • pdpURL是处理程序的本地,但popup是全局的

  • alert被赋予字符串,而不是变量引用


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

    function popup() {
        alert(pdpURL);
    }

    popup();
});

答案 1 :(得分:2)

首先,调用变量名时不需要引号。其次,该变量的范围限定为$(document).ready()函数,因此您的其他函数无法访问该变量。变量必须是全局的才能使您能够执行此操作,您可以通过在函数之外声明变量来完成此操作。

答案 2 :(得分:1)

试试这个:

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

答案 3 :(得分:0)

您需要替换单引号。试试alert(pdpURL)

答案 4 :(得分: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         |   |
|  +----------------------------------+   |      
|                                         |
+------------------------------------------

答案 5 :(得分:0)

你需要考虑$(document).ready();只有在整页加载完毕后才会触发。

这意味着此后的代码实际上可能在页面加载完成之前执行。

在查看执行顺序时,您应该始终考虑“事件”顺序。