0

JavaScriptを少し使用して日付と時刻を取得し、jQueryを使用してリンクを有効/無効にしようとしています。

だから私はこのようなものを持っています、

<a href="link.html" title="Link">
<img src="link.gif" alt="link" />
</a>

そして、金曜日の午後4時から日曜日の午前7時までの間に、こう言ってもらいたいのですが、

<img src="link.gif" alt="link">

どうすればそれができますか?

PS JavaScriptでサポートするよりも、リンクをハードコーディングしたいのですが...

4

6 に答える 6

1

アンカータグ()を削除する代わりに、次のようなコードを使用して無効にします。

function AGoodTime() {
    var now = new Date();
    var day = now.getDay();
    var hour = now.getHours();
    var IsBadTimeOnFriday = day == 5 && hour >= 16;
    var IsBadTimeOnSaturday = day == 6;
    var IsBadTimeOnSunday = day == 7 && hour <= 7;
    return !IsBadTimeOnFriday && !IsBadTimeOnSaturday && !IsBadTimeOnSunday;
}

$('.GoodTimes').click(function(event) {
    if(!AGoodTime()) {
        event.preventDefault();
    }
});

次のようなHTMLを使用します。

<a class="GoodTimes" href="http://www.google.com" target="_blank">test link</a>
于 2012-01-01T21:59:15.887 に答える
0

日付が指定された範囲内にある場合に、画像をリンクの外に移動してリンクを削除するjavascriptソリューション:

var d = new Date();
var doDisable = (d.getDay() == 5 && d.getHours() >= 16) || d.getDay() == 6 || (d.getDay() == 0 && d.getHours() < 7);
if (doDisable) {
  $('#link img').insertBefore('#link');
  $('#link').remove();
}

これをjQuery-DOM-Ready-Loaderに入れます。これがjsfiddleです。

@Originが指摘したように、これはユーザーがリンクされたURLにアクセスすることを妨げるものではなく、JavaScript対応のブラウザーでリンクを非表示にするだけです。

于 2012-01-01T21:38:47.617 に答える
0

何かのようなもの:

// caching the time variables.
var today = new Date();
var d = today.getDay();
var h = today.getHours();

if (d == 6 || (d ==5 && h>16) || (d == 0 && h < 7)) {
   $('a').click(function(e){
   e.preventDefault(); #prevent the link from working, without hiding it..
});
}
于 2012-01-01T21:41:22.793 に答える
0

これが作業バージョンですhttp://jsbin.com/ahitiv/9/edit#source

function ShowHide()
{
  var d = new Date();
  var dayofweek = d.getDay();
  var hourofday = d.getHours();
  if ((dayofweek === 0 && hourofday <= 7) || dayofweek === 6 || (dayofweek === 5 &&     hourofday >= 16)) 
  {
    $("#hello a").click(function(e){
    e.preventDefault();});
  }

}



$(document).ready(function(){

    ShowHide();

});
于 2012-01-01T21:50:25.093 に答える
0

まず第一に、これはサーバー側の仕事のように聞こえます。

(擬似コード)のようなもの

if shouldDisplayLink
 echo "<a ... <img ... </a> "
else
 echo "<img ... />"

ただし、JSソリューションが必要な場合は、次のjqueryを実行できます。2つのdivを作成します。一方を「リンクあり」、もう一方を「リンクなし」と呼びましょう。時刻が前後かどうかを確認し、表示したくない時刻で「非表示」を呼び出します。次のようになります

<div id="withlink">
    <a href="http://steps.mograbi.info">
       <img src="http://steps.mograbi.info/images/steps-logo.png?1321507410" alt="steps"/> 
    </a>
</div>

<div id="withoutlink">
    <img src="http://steps.mograbi.info/images/steps-logo.png?1321507410" alt="steps"/>
</div>
<script type="text/javascript">
    $(function(){
        var d = new Date();

        if (( d.getDay() == 5 && d.getHours() > 16 ) ||
            ( d.getDay() == 0 && d.getHours() < 7 ))
        {
            console.log("hiding with link");
            $("#withlink").hide(0);
        }

        console.log("hiding without link");
        $("#withoutlink").hide(0);
    })
</script>

追加/変更する必要があるものがあるかどうかを教えてください。

于 2012-01-01T21:50:49.790 に答える
0

JavaScriptの問題は、JavaScriptが無効化/削除されることです。これらの時間帯は、クライアントマシンではなく、クライアントマシンで無効になります。したがって、その期間(たとえば米国)にリンクを無効にしたい場合は、たとえばヨーロッパでは同時に無効にしないと言います。

したがって、これを行う最良の方法は、サーバー側からのリンクを無効にすることです。

JavaScriptで行う別の方法は、サーバーの時間または時間を標準の場所から取得することです。これは、ユーザーの場所に応じて、またリンクの有効化または無効化に応じて変更されません。私は時間を稼ぐためにこのコードを見つけました。

$(document).ready(function(){
  var timezone = "Europe/Berlin";
  $.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?",
    function(data){
      if (data.hour < 12) {
        alert ("Good morning in "+timezone);
      } else {
        alert ("Good afternoon in "+timezone);
      }
    })
});

これで、このコードを使用して、2つのdiv / spanを作成し、時間に基づいて1つを表示することで、リンクを表示/非表示にできます。

更新
これは、先ほど述べた方法の実際の例です。http://jsfiddle.net/pkDNX/

コードをタイムゾーンとif条件に合わせて調整する必要があります。

更新:これが要件の実際の例です。http://jsfiddle.net/pkDNX/1/

于 2012-01-01T22:10:49.010 に答える