Javascript 单击锚后,如何更改锚的href?
我有一个页面,可以通过AJAX获取数据。除此之外,我还有一个链接,可以将上述数据下载为CSV文件 我遇到的问题是,我需要在单击事件中传递一些参数,以便服务器可以返回正确的CSV文件 未经任何处理,链接如下所示:Javascript 单击锚后,如何更改锚的href?,javascript,jquery,Javascript,Jquery,我有一个页面,可以通过AJAX获取数据。除此之外,我还有一个链接,可以将上述数据下载为CSV文件 我遇到的问题是,我需要在单击事件中传递一些参数,以便服务器可以返回正确的CSV文件 未经任何处理,链接如下所示: <a href="/manager/TargetResults.csv" class="black">Download Target Reports</a> var holder = $('.hidden-information').first();
<a href="/manager/TargetResults.csv" class="black">Download Target Reports</a>
var holder = $('.hidden-information').first();
var newOutlets = $('input[name="newoutlets"]', holder).val();
var queryDate = $('input[name="enddate"]', holder).val();
window.location.href = this.href + "?endDate=" + queryDate + "&newOutlets=" + newOutlets;
return false; //prevent default going-to-href behavior
<a href="#" onclick="f1()">jhhghj</a>
<a href="#" onclick="f1(); return false;">jhhghj</a>
在这一阶段更改href似乎不会及时更新链接,URL将保持在服务器上时的状态
单击URL后是否可以更改URL,或者是否需要查看其他方法
谢谢您可以自己重定向窗口,如下所示:
<a href="/manager/TargetResults.csv" class="black">Download Target Reports</a>
var holder = $('.hidden-information').first();
var newOutlets = $('input[name="newoutlets"]', holder).val();
var queryDate = $('input[name="enddate"]', holder).val();
window.location.href = this.href + "?endDate=" + queryDate + "&newOutlets=" + newOutlets;
return false; //prevent default going-to-href behavior
<a href="#" onclick="f1()">jhhghj</a>
<a href="#" onclick="f1(); return false;">jhhghj</a>
或者,无论更新那些隐藏字段是什么,都要更新链接,而不是单击链接时,例如:
$("#someField").change(function() {
var holder = $('.hidden-information').first();
var newOutlets = $('input[name="newoutlets"]', holder).val();
var queryDate = $('input[name="enddate"]', holder).val();
$("a.black").attr("href", function() {
return "/manager/TargetResults.csv" + "?endDate=" + queryDate + "&newOutlets=" + newOutlets;
});
});
主要区别在于,这仍然允许正常的单击行为工作,ctrl+单击等。您可以在此处使javascript重定向:-
var holder = $('.hidden-information').first();
var newOutlets = $('input[name="newoutlets"]', holder).val();
var queryDate = $('input[name="enddate"]', holder).val();
var anchor = $(this);
var link = anchor.attr('href');
link = link + "?endDate=" + queryDate + "&newOutlets=" + newOutlets;
anchor.attr('href', link);
location.href=link;
有人可以禁用js,但你的代码完全基于js。
谢谢您可以在链接中添加一个
span
:
<a href="/manager/TargetResults.csv" class="black"><span>Download Target Reports</span></a>
…然后在
span
上钩住click
事件,这将发生在链接上的单击之前。如果没有href,单击将重新加载当前页面,因此您需要类似以下内容:
<a href="/manager/TargetResults.csv" class="black">Download Target Reports</a>
var holder = $('.hidden-information').first();
var newOutlets = $('input[name="newoutlets"]', holder).val();
var queryDate = $('input[name="enddate"]', holder).val();
window.location.href = this.href + "?endDate=" + queryDate + "&newOutlets=" + newOutlets;
return false; //prevent default going-to-href behavior
<a href="#" onclick="f1()">jhhghj</a>
<a href="#" onclick="f1(); return false;">jhhghj</a>
或者像这样防止滚动:
<a href="/manager/TargetResults.csv" class="black">Download Target Reports</a>
var holder = $('.hidden-information').first();
var newOutlets = $('input[name="newoutlets"]', holder).val();
var queryDate = $('input[name="enddate"]', holder).val();
window.location.href = this.href + "?endDate=" + queryDate + "&newOutlets=" + newOutlets;
return false; //prevent default going-to-href behavior
<a href="#" onclick="f1()">jhhghj</a>
<a href="#" onclick="f1(); return false;">jhhghj</a>
或在f1函数中返回false,并且:
<a href="#" onclick="return f1();">jhhghj</a>
……或者,以一种不引人注目的方式:
<a href="#" id="abc">jhg</a>
<a href="#" id="myLink">jhhghj</a>
<script type="text/javascript">
document.getElementById("myLink").onclick = function() {
document.getElementById("abc").href="xyz.php"; `enter code here`
return false;
};
</script>
document.getElementById(“myLink”).onclick=function(){
document.getElementById(“abc”).href=“xyz.php”`在此处输入代码`
返回false;
};
投反对票的人能否提供一些反馈,以便我的问题在将来更好地解决?