使用JavaScript启用href

Enable href using JavaScript

本文关键字:href 启用 JavaScript 使用      更新时间:2023-09-26

我有一个JavaScript函数,我使用它禁用超链接,它做到了这一点。几秒钟后假设4秒后我想启用链接。我不知道该怎么做。我写了一个函数来启用链接,但它不工作。

有人可以帮助使用JavaScript。

JS函数
function disableDownloadReportLink(link) {
     link.onclick = function(event) {
        event.preventDefault();
     }
   }   
 function enableDownloadReportLink() {
     document.getElementById('downloadReportLink').href.disabled = false;
   }   

基本上,与@Vicente Olivert Riera相同的模式,只是不同的实现,使用add/remove EventListener

<a href="./foo" id="my-link">foo</a>
<script>
function disableLink(link) {
    var handler = function(e) {
        e.preventDefault();
        console.log('click disabled');
    }
    link.addEventListener('click', handler, false);
    link.dataset.disableHandler = handler;
}
function enableLink(link) {
    if (link.dataset.disableHandler) {
        link.removeEventListener('click', link.dataset.disableHandler);
        link.dataset.disableHandler = null;
    }
}
var link = document.getElementById('my-link');
disableLink(link);
link.style.color = 'grey';
console.log('link disabled');
setTimeout(function(){
    enableLink(link);
    link.style.color = 'blue';
    console.log('link enabled');
}, 4000);
</script>

您需要在on load函数中设置一个定时器。这已经问了以前,看到这里的一个例子如何设置定时器在身体上onload?

添加一个.inactive类,将click事件绑定到e.p preventdefault ();

4秒后,删除类

function disableDownloadReportLink(link) {
  link.onclick = function(event) {
    event.preventDefault();
  }
}
function enableDownloadReportLink(link) {
  link.onclick = undefined;
}
var el = document.getElementById("wop");
disableDownloadReportLink(el);
setTimeout(
  function() {
    enableDownloadReportLink(el); 
  },
  4000
);
<a id="wop" href="http://www.google.com">I will work after 4 seconds!</a>

基本上你对disableDownloadReportLink所做的是禁用onclick事件所做的。如果您想要链接再次正常工作,您可以做的是将onclick设置为undefined:

function enableDownloadReportLink(link) {
    link.onclick = undefined;
}

您可以将对enableDownloadReportLink的调用放入setTimeout中,以便在4秒后执行:

setTimeout(
  function() {
    enableDownloadReportLink(link);                                                                                                                              
  },
  4000
);

对于你关于如何调用这些函数的问题,这就是我要做的,正如我在我的评论中告诉你的(不要指望这个片段能工作,只是一个例子):

function doEverything(link) {
  // submit integration report
  document.getElementById('viewIntegrationReport').submit();
  // disable link
  disableDownloadReportLink(link);
  // enable link after 4 seconds
  setTimeout(
    function() {
      enableDownloadReportLink(link);
    },  
    4000
  );  
}
<a href="#x" id="downloadReportLink" title="This function will provide you a 30 day download of all your eSign transactions." onclick="doEverything(this);"><span>Export E-Sign Information</span></a>