2016-12-22 31 views
1

我想检查一下<a>标签的“href”是否为空,如果这是真的,它应该提示类似“网站不可用atm” ,如果链接是正确的,它应该什么也不做。检查href是否为undefined,如果是true alert smth(没有jQuery)

HTML

<a onclick="testif();" class="link" href="www.google.com">This Link is defined</a> 
<a onclick="testif();" class="link" href="">This Link is undefined</a> 

的JavaScript

function testif(){ 
    if (document.getElementsByClassName("link").getAttribute("href") == ""){ 
    Alert("Site isn't available") 

    }else { 

    // if the link is correct, alert nothing 
    } 
};   

谢谢:)

+0

您的问题是什么? –

回答

1

顾名思义,getElementsByClassName产量多个元件;它们的href属性的组合永远不会等于空字符串。

+0

那么有没有其他方法可以解决这个问题? :d –

0

getElementsByClassName返回元素的集合,您将需要遍历每个元素,以检查它的href

function testif(){ 
    var links = document.getElementsByClassName("link"); 
    for(var i = 0; i < links.length; i++) { 
     if (links[i].getAttribute("href") == ""){ 
      alert('Site isn't available'); 
      return; 
     } 
    } 
} 
+0

@ScottHunter,警报只显示一次 –

3

的一种方式你能可能做到这一点是通过事件和检查event's target

DEMO

function testif (e) { 
 
    // prevent from actually going to another url, feel free to remove the line 
 
    e.preventDefault(); 
 
    // in case of IE 6-8 support 
 
    var target = e.target || e.srcElement; 
 
    if (!target.getAttribute('href')) alert("Site isn't available"); 
 
}
<a onclick="testif(event)" class="link" href="www.google.com">This Link is defined</a> 
 
<a onclick="testif(event)" class="link" href="">This Link is undefined</a>

+0

使用e.target –

+0

@ B.Assem很真实的时候要知道IE的,但对于旧版本的IE(6-8)。希望OP不必支持那些古老的东西。不过,我会将其添加到答案中。 – Dom

+0

我也希望对他来说:D ie6哦! –

2

你可以得到,并通过event.target测试点击链接:

function testif(e) { 
 
    e.preventDefault(); 
 
    target = e.target || e.srcElement; // Support for IE6-8 
 
    if (target.getAttribute("href") == "") { 
 
    console.log("Site isn't available") 
 
};
<a onclick="testif(event);" class="link" href="http://www.google.com">This Link is defined</a> 
 
<a onclick="testif(event);" class="link" href="">This Link is undefined</a>

或更短的语法:

function testif(e) { 
    e.preventDefault(); 
    target = e.target || e.srcElement; // Support for IE6-8 
    (target.getAttribute("href")) || console.log("Site isn't available") 
}; 
相关问题