href表达式<a href="javascript:;"></a>有什么作用?

时间:2011-10-13 13:46:19

标签: javascript

我已经看到网页中不时使用以下href。但是,我不明白这是尝试做什么或技术。有人可以详细说明吗?

<a href="javascript:;"></a>

12 个答案:

答案 0 :(得分:209)

<a>元素是无效的HTML,除非它具有hrefname属性。

如果您希望它作为链接正确呈现(即带下划线,手形指针等),那么只有具有href属性时才会这样做。

这样的代码有时被用作建立链接的方式,但无需在href属性中提供实际的URL。开发人员显然希望链接本身不做任何事情,这是他所知道的最简单的方式。

他可能在其他地方有一些javascript事件代码,在点击链接时触发,这将是他想要实际发生的事情,但他希望它看起来像一个普通的<a>标记链接。

一些开发人员使用href='#'用于相同目的,但这会导致浏览器跳转到页面顶部,这可能不是必需的。并且他不能简单地将href留空,因​​为href=''是返回当前页面的链接(即它会导致页面刷新)。

有很多方法可以解决这些问题。在href中使用空位的Javascript代码就是其中之一,尽管它不是最佳解决方案,但确实有效。

答案 1 :(得分:30)

基本上不使用链接移动页面(或锚点),使用此方法启动javascript函数

<script>
function doSomething() {
  alert("hello")
}
</script>
<a href="javascript:doSomething();">click me</a>
单击该链接将触发警报。

答案 2 :(得分:27)

有几种机制可以避免链接到达目的地。问题中的那个不太直观。

更清洁的选项是使用href="#no",其中#no是文档中未定义的锚点。

您可以使用更多语义名称(如#disable或#action)来提高可读性。

该方法的好处:

  • 避免空href =“#”
  • 的“移至顶部”效果
  • 避免使用javascript

<强>缺点:

  • 您必须确保文档中未使用锚名称。

由于<a>元素不作为链接,因此在这些情况下,最佳选择是不使用<a>元素而是使用<div>并提供所需的类似链接的样式。

答案 3 :(得分:9)

<a href="javascript:alert('Hello');"></a>

只是简写:

<a href="" onclick="alert('Hello'); return false;"></a>

答案 4 :(得分:8)

参考:

<a href="Http://WWW.stackoverflow.com">Link to the website opened in different tab</a>
<a href="#MyDive">Link to the div in the page(look at the chaneged url)</a>
<a href="javascript:;">Nothing happens if there is no javaScript to render</a>

答案 5 :(得分:7)

这是一种让链接在点击时完全没有任何作用的方式(除非Javascript事件绑定到它)。

这是一种运行Javascript而不是关注链接的方式:

<a href="Javascript: doStuff();">link</a>

当实际上没有javascript运行时(就像你的例子一样)它什么也没做。

答案 6 :(得分:4)

<a href="javascript:void(0);"></a>

javascript:告诉浏览器要编写javascript代码

答案 7 :(得分:3)

旧线程,但我认为我只是补充说开发人员使用此构造的原因不是创建死链接,而是因为javascript URL由于某种原因没有正确传递对活动html元素的引用。

e.g。 handler_function(this.id)作为onClick使用,但不作为JavaScript网址。

因此,在编写符合标准的符合规范的代码之间做出选择,这些代码涉及您必须手动调整每个超链接的调用,或稍微非标准的代码,可以一次编写并在任何地方使用。

答案 8 :(得分:2)

因此,它通常用于在href内而不是像onclick这样的事件监听器中编写js代码,并避免在#中使用href链接来使a标签有效用于html。

我研究了如何在javascript:属性内使用href

<a href="
     javascript:
        a = 4;
        console.log(a++); 
        a += 2; 
        console.log(a++); 
        if(a < 6){ 
            console.log('a is lower than 6');
        } 
        else 
            console.log('a is greater than 6');
        function log(s){
            console.log(s);
        }
        log('function inplimentation working too');

">Click here</a>

通过此代码,您甚至可以在其中编写js代码,而不仅仅是调用函数。


在chrome版本68.0.3440.106(正式版本)(64位)中进行了测试

在Firefox Quantom 61.0.1(64位)中进行了测试

答案 9 :(得分:0)

a:not([href]){光标:指针; }

答案 10 :(得分:-1)

始终正确呈现链接的最佳方法是使用css,如下所示:

a {cursor: pointer !important}

应该避免遵循线程中提到的不必要的事情。

答案 11 :(得分:-3)

    1. Use that java script to Clear an HTML row Or Delete a row using the id set to a span and use JQuery to set a function to that span's click event.
    2. Dynamically set the div html to a string variable and replace {id} with a 1 or 2 etc. cell of a larger div table and rows

<div class="table-cell">
    <span id="clearRow{id}">
        <a href="javascript:" style-"color:#c32029; align:right; font-size:8pt;">Clear</a>
    </span>
</div>

<div class="table-cell">
   <span id="deleteRow{id}">
       <a href="javascript:" style-"color:#c32029; align:right; font-size:8pt;">Delete</a>
   </span>
</div>

//JQuery - Clear row
$("#clearRow" + idNum).click(function(){
    $("someIDOrWildcardSelector" + idNum).val("");
    $("someIDOrWildcardSelector" + idNum).val("");
    $("someIDOrWildcardSelector" + idNum).val("");
});

//JQuery to remove / delete an html row
$("#deleteRow" + idNum).click(function(){
    //depending upon levels of parent / child use 1 to many .parent().parent().parent()
    $(this).parent().remove();
});