2017-10-26 10 views
0

夏期(つまりhttps://example.net/summer)と冬期(つまりhttps://example.net/winter)の間に別のエンドポイントに移動するハイパーリンクを作成するにはどうすればよいですか? PHPを使わずにクライアント側で行う必要がある。夏は4月15日から9月15日、冬は9月16日から4月14日と仮定するが、正確な日付は重要ではなく、簡単に変更できる。季節(つまり夏/冬)に依存するハイパーリンク

EDIT。 moment()勧告がQuentin Rogerによって提供されたので、私は実際にこの解決策には功績を認められません。

<a id="link" href="javascript:void(0)">Click Me</a> 

$("#link").click(function() { 
    window.location = moment().isBetween(moment("2017-05-01"), moment("2017-09-01")) 
    ?'https://example.net/summer' 
    :'https://example.net/winter'; 
}); 
+0

ヒント:クライアントの日付でのみこれを行うことは信頼できません。なぜなら、私はtを間違った値に設定することができます。カスタムサーバースクリプトまたは任意のAPIまたはサービスを使用して、信頼性の高い日付を取得する必要があります。 – Kaddath

+0

@Kaddath Trueですが、これは問題ありません。冬のページには、夏から冬にかけてのリンクがあります。その目的は、最初は「考える」というページを最初に取得することだけです。 – user1032531

+2

あなたが試したことのために[mcve]を提供してください。 –

答えて

2

あなただけ

window.addEventListener("load", function() { 
 
    let anchor = document.getElementById("season_dependant"); 
 
    // Get current Date: 
 
    let date = new Date(); 
 
    
 
    // consider two dates as boundaries, they must be the same year 
 
    let start_date = new Date(); 
 
    start_date.setMonth(3); // month index (-1) 
 
    start_date.setDate(15); // day of month 
 
    // => 15th, April of current year 
 
    
 
    let end_date = new Date(); 
 
    end_date.setMonth(9); // month index (-1) 
 
    end_date.setDate(1); // day of month 
 
    // => 1st, October of current year 
 
    
 
    // NOTE: must be start_date < end_date for this to work 
 
    
 
    if (date > start_date && date < end_date) { 
 
    // If inside period: 
 
    anchor.href = "/summer"; 
 
    } else { 
 
    // If outside period: 
 
    anchor.href = "/winter"; 
 
    } 
 
});
<a id="season_dependant">link</a>
のhrefプロパティを設定する前に、いくつかの日付の比較を行うことができます

+0

素敵なネイティブJavaScriptソリューション – user1032531

+0

以前は 'let'を使用していませんでした。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let – user1032531

+1

@ user1032531ブラウザの互換性について気にしない場合は、もうvarを使用しないでください。代わりに、 'let'と' '' '' '(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) – Apolo

1

私は何か誤解していると思いますが、日付に基づいて条件に応じてリンクを更新したいと思っています。次のことができます(momentjsを使用)。 私はあなたが夏にかいないかどうかを判断するための条件を改善しましょう;)

if (moment().isBetween(moment("2017-05-01"),moment("2017-09-01"))) { 
    $("#link").attr('href', "https://example.net/summer").html('summer'); 
} else { 
    $("#link").attr('href', "https://example.net/winter").html('winter'); 
} 

http://jsfiddle.net/ubdxLeb9/1/

+0

ありがとうございます。私は 'moment()'について知らなかった。 – user1032531

+1

問題はありません、momentjsはブラウザの互換性のための非常に良いライブラリです。お力になれて、嬉しいです。 –

関連する問題