JavaScript:从 javascript 调用锚标记的点击事件

IT技术 javascript jquery click onclick
2021-03-09 09:27:01

我有一个带有锚标记的页面。在我的 JavaScript 中,我HREF根据一些 if-else 条件动态设置锚标记属性。现在我想以编程方式调用锚标记的点击事件。我使用了下面的代码,但没有成功。

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";

document.getElementById("proxyAnchor").href=proxyImgSrc;
document.getElementById("proxyAnchor").onclick;

谁能告诉我如何继续?我在这个链接上有一个 jQuery 灯箱实现(thickbox)。

好心提醒。提前致谢。

6个回答

如果您安装了 jQuery,那么为什么不这样做:

$('#proxyAnchor')[0].click();

请注意,我们使用 [0] 来指定第一个元素。jQuery 选择器返回一个 jQuery 实例,并调用 click() 只调用 click javascript 处理程序,而不是 href。在实际元素(由 [0] 返回)上调用 click() 将遵循 href 等中的链接。

请参阅此处的示例以说明差异:http : //jsfiddle.net/8hyU9/

至于为什么您的原始代码不起作用 - 这可能是因为您正在调用onclick,而不是onclick()如果没有括号,JavaScript 将返回分配给该onclick属性的任何内容,而不是尝试执行它。

试试下面这个简单的例子,看看我的意思:

var f = function() { return "Hello"; };     
alert(f);
alert(f());

第一个将显示函数的实际文本,而第二个将按预期显示单词“Hello”。

我可以设置下载文件的路径吗?因为使用它只是下载到 DOWNLOADS 文件夹。我想保存到 html 文件的位置。
2021-04-21 09:27:01
@TheOneWhoSighs 检查此答案编辑的时间戳。我的评论是对原始答案(“纯 jQuery”解决方案)的回复。
2021-05-02 09:27:01
@RoatinMarth 实际上,它确实适用于此。部分问题是您使用的是 JSFiddle(单击链接本身在 JSFiddle 中不起作用)。对于它在 JSFiddle 中工作的完美示例,请尝试将目标设置为 _blank。另外,你没有做 [0]。我在我自己的服务器上没有目标的情况下测试了它,它工作得很好。所以这里有一个 JSFiddle 的“固定”版本:jsfiddle.net/SNdHW/4/show
2021-05-11 09:27:01
对于“遵循锚中定义的href”的用例,此答案失败
2021-05-18 09:27:01

你应该像这样调用点击事件:

document.getElementById("proxyAnchor").click();
// $('#proxyAnchor').click();

但在您的情况下,如果您愿意,您应该将窗口的位置设置为重定向页面。

我可以设置下载文件的路径吗?因为使用它只是下载到 DOWNLOADS 文件夹。我想保存到 html 文件的位置。
2021-04-27 09:27:01

我相信您想调用该click事件。不是“onClick”。此外,请确保在调用方法时包含括号 ()。不要将方法(以 ( 和 ) 结尾)与不以 ( 和 ) 结尾的属性和属性混淆。

// Using jQuery - Which you tagged...
$("#proxyAnchor").attr("href", proxyImgSrc).click();

要立即更改页面,您还可以执行以下操作:

var proxyImgSrc= "CostMetrics.aspx?Model=" + model + "&KeepThis=true&TB_iframe=true&height=410&width=650";
window.location = proxyImgSrc;

以下是 W3 Schools 的示例:http : //www.w3schools.com/js/tryit.asp? filename=tryjs_location

我相信这就是你所追求的:

var proxyImgSrc="CostMetrics.aspx?Model=" + model +"&KeepThis=true&TB_iframe=true&height=410&width=650";
$("#proxyAnchor").attr('href', proxyImgSrc).trigger("click");;