У меня есть программа JavaScript, которая отображает текущую дату и время в заголовке страницы (), затем я попытался анимировать этот заголовок как строку сканирования, но ничего не работает. Пробовал использовать метод среза, а также метод подстроки, но ничего не вышло.
function updateDateTime() {
let datetime = new Date();
let datetimeString = datetime.toLocaleString();
document.title = datetimeString;
}
setInterval(updateDateTime, 1000); // оновлюємо час кожну секунду
updateDateTime();
let marquee = document.getElementById("marquee");
let datetime = document.getElementById("datetime");
function shiftDateTime() {
const unit = "px";
let position = Number.parseInt(datetime.style.right) || 0;
let width = datetime.offsetWidth;
position = position > marquee.offsetWidth ?
-width :
position + 1;
datetime.style.right = position + unit;
requestAnimationFrame(shiftDateTime);
}
shiftDateTime();
<!DOCTYPE html>
<html>
<head>
<title>Date&Time marquee</title>
</head>
<body>
<div id = "marquee">
<span id = "datetime"></span>
</div>
</body>
</html>
Вот мой код, все, что я смог сделать, это отобразить текущую дату и время в заголовке. В итоге наша программа должна отображать текущую дату и время в заголовке страницы и анимировать их в виде бегущей строки справа налево. Как мне это сделать?
У вас нет понятия px
в заголовках веб-страниц. Это просто простые строки
Кстати, мне действительно не нравится связанный вопрос. Ваша логика верна, и я бы сохранил ваш код, просто добавьте пробелы в конце, чтобы переместить заголовок
Мне нужна дата (чч:мм:сс), которая меняется каждую секунду и перемещается, а не только текст.
Просто добавляйте пробел на каждой итерации:
let i = 0;
function updateDateTime() {
const datetime = new Date();
const datetimeString = datetime.toLocaleString();
const trailingSpaces = Array(i).fill().map(_=>' ').join('');
document.title = trailingSpaces + datetimeString;
i = (i + 1) % 10;
}
setInterval(updateDateTime, 100);
<!DOCTYPE html>
<html>
<head>
<title>Date&Time marquee</title>
</head>
<body>
<div id = "marquee">
<span id = "datetime"></span>
</div>
</body>
</html>
Я не понимаю почему, но моя линия не работает. Меняется только время.
символы первого пробела нельзя использовать в элементе заголовка html.
вместо этого вы можете использовать _
.
let tittlemov = 0;
setInterval(()=>
{
document.title = '_'.repeat(tittlemov++)
+ new Date().toLocaleString()
+ '_'.repeat(10 - tittlemov);
tittlemov %= 10;
}, 1000 );
Отвечает ли это на ваш вопрос? Как сделать так, чтобы текст внутри тега title анимировался с помощью JavaScript?