私が探しているものを説明するのはやや複雑ですが、ここの誰かがこれを手伝ってくれることを真剣に願っています.
基本的に、私は「カウントダウン/カウントアップ」JavaScript を探しています。
この種のスクリプトの多くのバリエーションを見つけましたが、次の要件を満たしているものはありません。
特に必要なのは、ページの読み込み時に 36000 秒からカウントダウンを開始するスクリプトです。そして0秒に達したとき。すぐに 36000 秒までカウントバックを開始します。
一方、スクリプトによって影響を受ける必要があるこれらの 2 つの div があります。
<style>
.indicator {
width: 20px;
height: 8px;
}
</style>
<div class="percent">100%</div>
<div class="indicator"></div>
ご覧のとおり、最初の div の innerHTML は 100% で開始され、スクリプトが 360 秒ごとにカウントされると 1 減らされます。 (例: 3600 秒を超えてカウントすると、innerHTML は 90% になるはずです)
2 番目の div の幅は 20 ピクセルで、スクリプトが 1800 秒ごとにカウントされると 1 ピクセルずつ縮小する必要があります。 (例: 3600 秒を超えてカウントする場合、幅は 18px にする必要があります)
- 36000秒 = 100% = 20px
- 18000秒 = 50% = 10px
- 3600秒 = 10% = 2px
- 1800秒 = 5% = 1px
- 360秒 = 1% = 0px
前述のように、スクリプトは 0 秒に達した時点でカウントアップを開始する必要があります。これが発生すると、2 番目の div の className がindicatorからchargeに変更され、最初の div の innerHTML が秒のカウントされた過去に従って適切に増加する必要があります。 (スクリプトがカウントダウンしていたときとまったく同じ)
ただし、カウントアップが 36000 秒に達すると、再びカウントダウンを開始するだけではなく、そこで一時停止して、2 番目の div の className を chargeing からcharged に変更することになっています。言うまでもなく、この時点で最初の div の innerHTML は 100% になっているはずです。これ以降、スクリプトは 2 番目の div がクリックされた場合にのみカウントダウンを開始します。この場合、2 番目の div の className は charge back からindicatorに変更する必要があります。
さらに、2 番目の div がクリックされるたびにカウントダウン/カウントアップが逆になり、同時にその className が変更されます。
- カウントダウン:
<div class="indicator"></div>
- カウントアップ:
<div class="charging"></div>
長い説明と私の貧弱な英語の文法で申し訳ありません...
誰かがこれを理解できることを願っています:)