2016-12-22 62 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") 
}; 
相關問題