0

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

需要将变量传递给函数
如何将这个变量传递给这个函数?
将变量传递给外部javascript?

我还尝试过 Google 和一些 JavaScript 教程,并尝试使用单引号、双引号、括号等……没有任何效果。有人可以帮忙吗?谢谢你。

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

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

4

6 回答 6

4

几个问题:

  • 你没有打电话popup

  • pdpURL对于处理程序来说是本地的,但是popup是全局的

  • alert定一个字符串,而不是变量引用


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

    function popup() {
        alert(pdpURL);
    }

    popup();
});
于 2012-10-02T02:57:56.000 回答
2

首先,当你调用它时,你不需要在变量名周围加上引号。其次,该变量的作用域是$(document).ready()函数,因此您的其他函数将无法访问该变量。变量必须是全局的,您才能执行此操作,您可以通过在函数之外声明变量来实现。

于 2012-10-02T03:00:16.493 回答
1

试试这个:

 <script type="text/javascript">
            function popup(path) {
                alert(path);
            }
            $(document).ready(function() {
                var pdpURL = window.location.pathname;
                popup(pdpURL);
            });
            </script>
于 2012-10-02T02:59:04.937 回答
0

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

于 2012-10-02T02:57:00.773 回答
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         |   |
|  +----------------------------------+   |      
|                                         |
+------------------------------------------
于 2012-10-02T03:03:06.980 回答
0

您需要考虑 $(document).ready(); 只有在整个页面完成加载时才会触发。

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

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

于 2012-10-02T21:42:54.020 回答