我正在做更大的事情,但是我将继续为我的问题提供一个更简单的例子。
假设我有两个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
this
是keyword 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
,则在加载该页面时,您将可以访问值为foo
的bar
变量。
了解这一点之后,您可以编写一个jquery函数,将url参数添加到您的<a>
标记中,从而使您的标记看起来像这样:
<a href="nextpage.html?variable=myspecialvalue">Whatever</a>
或者,如果这不是一个详尽的过程,则可以仅在模板中手动更改
href
值。关于javascript - 在href页面上执行javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43523154/