我正在做更大的事情,但是我将继续为我的问题提供一个更简单的例子。

假设我有两个html页面。在第一页上,我有三个锚标签,所有这些锚标签都链接到第二页。

<a href="nextpage.html"> You clicked Red </a>
<a href="nextpage.html"> You clicked Blue </a>
<a href="nextpage.html"> You clicked Yellow </a>


第二页只有一个空的paragraf。

当您单击第一页上的三个链接之一并转到第二页时,第二页应该包含相应单击的<a>标记的文本。

我已经在.js文件中编写了这样的javascript(Jquery)代码,并包含在两个页面的<head>中:

$(document).ready(function() {

  $('a').click(myFunction);
});


function myFunction() {

  var text = $(this).text();
  $("p").html(text);
}


上面的代码应该可以工作,但不幸的是它不能。我在console.log中运行了一个测试,单击链接并指向2nd时得到的结果是不确定的。我不知道为什么会这样,因为我在两个页面上都包含了javascript文件,并且应该彼此通信。

最佳答案

为什么有undefined

thiskeyword in javascript,可以引用几件事,具体取决于调用的位置和方式。

$(literally anything at all)是围绕内部内容的jQuery包装器。

就您而言,您在jQuery关键字周围有一个this包装器。 this指的是它内部的功能,即myfunciton

一旦在jQuery包装器中包装了一些东西,jquery就会添加一堆自己的函数,例如text()html()slideDown()等。

如果传递给jquery包装器的任何内容都有textnode,则text()函数将返回该节点的文本。但是,您传入了myfunction,它没有文本节点。

因此,$(myfunction).text()undefined

回答

您必须以某种方式将所需的值作为请求的一部分传递到下一页。有人建议使用浏览器的localstorage。你可以做到的。或者,您可以将值作为url参数传递。

如果访问www.example.com/?foo=bar,则在加载该页面时,您将可以访问值为foobar变量。

了解这一点之后,您可以编写一个jquery函数,将url参数添加到您的<a>标记中,从而使您的标记看起来像这样:

<a href="nextpage.html?variable=myspecialvalue">Whatever</a>


或者,如果这不是一个详尽的过程,则可以仅在模板中手动更改href值。

关于javascript - 在href页面上执行javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43523154/

10-11 22:25
查看更多