#jquery
#jquery
Вопрос:
У меня есть две кнопки, одна для преобразования в 24 часа, а другая для преобразования в 12 часов. Когда я нажимаю кнопку 12h, он преобразуется на секунду в формат 12h и возвращается к 24h. например, если его 13:00, он преобразуется в 1: 00 вечера на секунду и возвращается к 13:00. Как я могу сделать так, чтобы он оставался таким же, как 1:00 вечера, и менялся только тогда, когда я нажимаю кнопку 24 часа?
function clock() {
var date = new Date();
var $hour = date.getHours();
var $minutes = date.getMinutes();
//Add 0 if hour and minutes are before 10//
if ($hour < 10) $hour = "0" $hour;
if ($minutes < 10) $minutes = "0" $minutes;
$("#hour").html($hour);
$("#minutes").html($minutes);
//Convert to 12H//
$("#twelveHourTime").on("click", function() {
$("#ampm").html("AM");
if ($hour >= 12) {
$("#hour").html($hour - 12);
$("#ampm").html("PM");
}
});
//Convert to 24H//
$("#twentyFourHourTime").on("click", function() {
$("#hour").html($hour);
$("#minutes").html($minutes);
$("#ampm").html(" ");
});
};
$(document).ready(function() {
setInterval('clock()', 1000);
});
<div class="main">
<div class="clock">
<span id="hour"></span>
<span id="seconds">:</span>
<span id="minutes"></span>
<span id="ampm"></span>
</div>
<div class="btn">
<button id="twentyFourHourTime">24H</button>
<button id="twelveHourTime">12H</button>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
Ответ №1:
вы не хотите, чтобы обработчики щелчков выполняли функцию синхронизации (таким образом, они применяются каждую секунду, достаточно применить их один раз)
Я бы использовал переменную для хранения решения, а в обработчиках щелчков вы просто устанавливаете переменную в соответствии
var am_pm = false;
function clock() {
var date = new Date();
var $hour = date.getHours();
var $minutes = date.getMinutes();
//Add 0 if hour and minutes are before 10//
if ($hour < 10) $hour = "0" $hour;
if ($minutes < 10) $minutes = "0" $minutes;
// if 12h is true
if(am_pm){
$("#ampm").html("AM");
if($hour >= 12){
$hour = $hour - 12;
$("#ampm").html("PM");
}
}else{
$("#ampm").html(" ");
}
$("#hour").html($hour);
$("#minutes").html($minutes);
};
$(document).ready(function() {
$("#twelveHourTime").on("click", function() {
am_pm = true;
});
$("#twentyFourHourTime").on("click", function() {
am_pm = false
});
setInterval('clock()', 1000);
});
<div class="main">
<div class="clock">
<span id="hour"></span>
<span id="seconds">:</span>
<span id="minutes"></span>
<span id="ampm"></span>
</div>
<div class="btn">
<button id="twentyFourHourTime">24H</button>
<button id="twelveHourTime">12H</button>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
Ответ №2:
Вы должны сохранить этап во внешней переменной и проверять каждый раз, когда вы вызываете clock (), какой формат необходим. Кстати: $ в качестве префикса переменной не так часто используется в javascript, как в PHP.
var twelfHourMode = false;
function clock()
{
var date = new Date();
var hour = date.getHours();
var minutes = date.getMinutes();
//Add 0 if hour and minutes are before 10//
if (hour < 10) hour = "0" hour;
if (minutes < 10) minutes = "0" minutes;
$("#hour").html(hour);
$("#minutes").html(minutes);
$("#ampm").html("");
if(twelfHourMode)
{
$("#ampm").html("AM");
if ($hour >= 12)
{
$("#hour").html(hour - 12);
$("#ampm").html("PM");
}
}
};
$(document).ready(function()
{
//Convert to 12H//
$("#twelveHourTime").on("click", function()
{
twelfHourMode = true;
clock();
});
//Convert to 24H//
$("#twentyFourHourTime").on("click", function()
{
twelfHourMode = false;
clock();
});
setInterval('clock(' ')', 1000);
});