javascript - 如何在 onclick 事件期间更改 href

标签 javascript jquery html

我正在尝试创建一个动态超链接,用于下载从服务器检索到的图像。

我使用的代码:

HTML:

<a class="btn" id="controlDownloadJPEG" download>Save & Download</a>

JS:

this.downloadJPEGClickHandler = function() {
    CollageCore.downloadJPEG(function(data){
        $("#controlDownloadJPEG").attr("href", "../file/fileStore.action?fileName=/" + data[0].AttachmentUrl);
    });;
    return true;
};

点击时 href 会发生变化,但链接本身会链接到我的 JavaScript 执行之前设置的 href。第一次点击没有任何作用,因为没有默认的 href,第二次点击将下载第一次点击应该下载的内容。

我看到了使用 JavaScript window.href 而不是依赖 html 标签本身的建议。我需要使用 html 标签的原因是它的下载功能。

最佳答案

您将异步调用视为同步调用。这就像订购外卖比萨饼并期望它在您下订单后立即出现。这不会发生,除非你站在餐厅里并且它已经做好了。

您需要取消点击并在调用返回时手动触发页面更改。所以您想使用 window.location.href = "new path"; 而不是设置 href。

this.downloadJPEGClickHandler = function() {
    CollageCore.downloadJPEG(function(data){
        window.location.href = "../file/fileStore.action?fileName=/" + data[0].AttachmentUrl;
    });
    return false;  //or preventDefault if you pass in event object
};

关于javascript - 如何在 onclick 事件期间更改 href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28991127/

相关文章:

jquery - 使用 jQuery 获取带有 selectedindex 的选择框值

html - 使我的页脚图标不会堆叠在一起,同时减少我的页面宽度

javascript - html:在 anchor 中添加另一个类

javascript - jQuery 点击切换同级

javascript - 尝试显示和隐藏 div 以实现排序效果

javascript - JQuery 表单没有重新加载 : how to pass the $_POST info after success?

javascript - 向对象添加原型(prototype)会出现错误

javascript - 如何更改此 html 标记中的 src。我想将 src 更改为其他内容

javascript - AngularJS 刷新时漂亮的 URL 路由

python - 确定 Django 模板中元素的高度