2016-12-22 3 views
1

<a>タグの「href」が空であるかどうかを確認したい場合は、「サイトが利用できません」という警告が表示されるはずです。リンクが正しい場合は何もしないでください。真のアラートスムース(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、警告は1回だけ表示されます –

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を使用している場合はIEに気を付けてください。 –

+0

@ B.Assem非常に真ですが、これは古い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") 
}; 
関連する問題