2012-01-31 27 views
1

条件のついて、別のページと私のページをリンクしたいと思います。HTMLで条件付きハイパーリンクを作成するには

、すなわち1.html2.html3.html、私は3 HTMLページがあるとします。私が欲しいのは、1.htmlがロードされている場合、ロードページ2.html; 1.htmlがロードされていない場合は、3.htmlをロードします。

助けてください。

+1

1.htmlを読み込むことができるかどうか、つまりドキュメントが存在するかどうかチェックしますか? 質問を言い換えてください。 – zvona

答えて

1

私はページ1,2および3についてのあなたの説明に従うことができませんが、一般的な意味では、 "onclick"イベントを処理することによって、いくつかの条件によって異なるURLに行くことができますデフォルトのナビゲーション、代わりに、JavaScriptからそれを実行します。

<a href="defaulturlhere" onclick="doClick(); return false;">My link</a> 

<script> 
function doClick() { 
    if (someCondition || someOtherCondition) 
     window.location.href = "firstURLhere"; 
    else 
     window.location.href = "alternativeURLhere"; 
} 
</script> 

JavaScriptが無効になっている場合はアンカーのhref属性で指定されたURLが使用されます。それ以外の場合は、doClick()関数を呼び出して、ナビゲートするURLを決定します。もちろん、この機能は必要に応じて簡単にも複雑にもできます。

onclickは、(明らかに)href属性のURLに移動するため、アンカーのクリックのデフォルト動作を取り消す必要があります。

+0

これは、 'onclick =" return doClick(); "'のように、デフォルトに従っているかどうかを制御するようにする方が良いかもしれません。あなたが持っている方法では、リスナーが実行されてもリンクは決して追跡されません。 – RobG

+0

@RobG - ええ、私は知っていますが、私はこれについて多くの詳細を説明するよう動機づけられていなかったことを認めなければなりません(代替案に言及せずにインラインonclickの属性を理解しやすい理由も) 。 – nnnnnn

0

私はあなたが達成したいとは思っていません。

他のページが以前に開かれている場合にのみ、ページにハイパーリンクを表示すると思います。

このような場合は、ページ1のwindow.loadにクッキーを作成することができ、そしてクッキーが設定されている場合は、そのクッキーが2ページ

のwindolow.onloadイベントに設定されているかどうかを確認、ダイナミックを作成しますページ2のハイパーリンクをクリックしてページ3にリダイレクトします。クッキーが設定されていない場合は、リンクを作成しないでください。

また、Cookieが設定されているかどうかに基づいて、動的に作成する代わりにハイパーリンクを表示/非表示にすることもできます。 jQueryを使用していない場合、これは簡単でクロスブラウザーな方法です。

を参照してください:http://www.w3schools.com/js/js_cookies.asp

0

をそれはの線に沿って何かする必要があります:あなたはページの一番下にスクリプトを追加する場合は、Javascriptをすべて<a>タグを検索し、現在にそれらを比較します url。一致した場合、そのスタイルは不可視に設定されます。

<script> 
linkNodes = document.getElementsByTagName("a"); 

for(i = 0; i < linkNodes.length; i++){ 
    if(linkNodes[i].getAttribute("href") == document.url){ 
    linkNodes[i].style.visibility= "hidden"; 
    } 
} 
</script> 

1.htmlの場合は、2.htmlと3.htmlが表示されますが、1.html自体は表示されません。 2.htmlの場合は1.htmlと3.htmlだけしか表示されません。

+0

私はコードをテストしませんでした...私のコンピュータにはいなかったので...任意の変更をコメントしてください... – edgarator