1

しばらくの間稼働している Visual Studio 2005 サイトがあります。このサイトにある画像 (.JPG) に JavaScript を適用する必要がありますか?

基本的に、私は 12 月に 25 枚の画像を持っています。この画像を別の画像に変更するために毎日サイトにアクセスする代わりに、コードによってこれを自動的に完了できるようにしたいと考えていました。

.NET のスキルはある程度ありますが、このタスクを完了するには JavaScript を使用する必要があると思います。誰かが私を正しい方向に向けたり、役立つサンプルコードを提供したりできますか?

4

2 に答える 2

1

最も簡単な方法は、すべての画像の名前を「December1.jpg」、「December2.jpg」、「December3.jpg」などに変更することだと思います。サーバー側では次のようになります。

<img src="/path/to/images/December<%=DateTime.Now.Day%>.jpg"/>

これは、月の日をイメージ名に追加するだけです。より洗練された方法はありますが、1 回限りの取引の場合、これよりもはるかに簡単になることはありません。

編集:26日に404画像にならないように、画像に「存在する場合」を入れることもできます。このようなもの:

画像を変更して ID を追加し、デフォルトで非表示にします。

<img id="dayImage" runat="server" Visibility="false" src="/path/to/images/December<%=DateTime.Now.Day%>.jpg"/>

次に、コードビハインドで:

if (File.Exists(@"C:\path\to\images\December" + DateTime.Now.Day + ".jpg"))
{
    //this will show the image if it exists on the disk
    dayImage.Visibility = true;
}

詳細については、http: //www.dotnetperls.com/file-existsを参照してください。

于 2012-11-16T14:43:40.870 に答える
1

私のやり方はサーバー側のコードを使用することですが、JavaScript の例を示す方が誰にとっても簡単だと思います。あなたが求めていることを達成するために取るかもしれないいくつかのアプローチがありますが、これを行う簡単な方法の 1 つは、すべての画像ファイルへの URL を配列内の文字列として保存することです。

var urlPath = new Array();

urlPath[0] = "Leave Empty"; //Because there will never be a 0th day of any month...
urlPath[1] = "/Images/nameOfPic1.jpg";
urlPath[2] = "/Images/nameOfPic2.jpg";
urlPath[3] = "/Images/nameOfPic3.jpg";

次に、日付を取得してそれらを循環します。

var myDate = new Date();

次に、getDate() に基づいて画像へのパスを取得します。

var currentDate = myDate.getDate();
document.getElementById("imgElement").src=urlPath[currentDate];

次に、(特定の月に持っている写真の数に応じて)数値の日付に基づいて新しい写真を割り当てることができます. もちろん、この例を使用して、必要に応じてそれらを呼び出すために、1 か月の最大日数 (31) に等しい量の画像を用意することは理にかなっています。この方法では、特定の月 (ただし、31 日未満の月) の特定の写真が除外されます。それらを単純に循環させたい場合は、上記とまったく同じように行いますが、最後の 2 つのステートメントの代わりにこれを追加します (この例では、常に 25 個の画像があると想定しています)。

var currentDate = myDate.getDate();
if(currentDate > 25)
{
    currentDate -= 25;
    document.getElementById("imgElement").src=urlPath[currentDate];
}
else
{
    document.getElementById("imgElement").src=urlPath[currentDate];
}

これは完璧ではありません。新しい月が始まるたびに画像リストが最初からやり直され、一部の画像が他の画像よりも多く表示されるからです。これを行うためのより良い方法があるかどうかはわかりませんが、クライアントがあまりうるさくなければ、仕事は完了するはずです。繰り返しになりますが、個人的には、サーバー側のコードを使用して、グローバルなアプリケーション変数を設定し (すべての人に)、これを直接処理して AppState 変数を記憶します (WebMatrix (C#) を使用していることは明らかですか?)クライアント側の状況に関係なく。

これが役立つことを願っています:)

于 2012-11-16T15:12:19.480 に答える