Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   генерация чисел (https://javascript.ru/forum/misc/85903-generaciya-chisel.html)

Uthvfy62 09.05.2024 20:28

генерация чисел
 
Прошу поддержки. Есть такой скрипт.
var a = [1,2,3,4,5,6,7];
var i = 0;
function delayedLoop()
{
var b = document.getElementById('block');
b.className = ('active'+a[i])+(' block');
i++;
if(i == a.length) {i = 0}
window.setTimeout(delayedLoop, 15000);
}delayedLoop();
, который генерирует постоянный цикл чисел от 1 до 7 Если запускаю этот скрипт на компе, содав файл html, то всё работает как надо. Если же я загружаю этот скипт на сайт на #block генерируется не active1,2,3,4... а 1,3,5,7,2,4,6. Какая причина может быть? Что не так, или что может мешать процессу?

вот сам адрес где можно увидеть этот процесс https://georgiafriends.ru/ddgg/. Я в примере указал #block, на самом деле #header_bg

рони 09.05.2024 20:59

:-?
Цитата:

Сообщение от Uthvfy62
вот сам адрес где можно увидеть этот процесс https://georgiafriends.ru/ddgg/.

Цитата:

Результаты анализа страницы “https://georgiafriends.ru/ddgg/”
2ip Safe Browsing: Подозрение на вирус!
На сайте обнаружены iframe-вставки, ссылающиеся на сомнительные сайты либо обфусицированный код.

Uthvfy62 09.05.2024 21:16

это скорей всего реклама от гугла которую я частично заблокироал. Не подскажите как это обойти? Или что-то иначе.

Uthvfy62 09.05.2024 21:27

вы это имеете в виду?
<iframe src="https://w.uptolike.com/widgets/v1/impression.html?1ea92d09c43527572b24fe052f11127b" style="width: 1px; height: 1px; position: absolute; left: -100px; top: 0px; border: none;"></iframe>
Как от этого избавиться, не подскажите?

Uthvfy62 09.05.2024 21:33

или же как сделать скрипт устойчивым.

рони 09.05.2024 21:58

Цитата:

Сообщение от Uthvfy62
или же как сделать скрипт устойчивым.

<!DOCTYPE HTML>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>

<body>
    <div id="block"></div>
    <script>
        let prev = performance.now();
        let delay = 1500;
        let max = 7;
        let block = document.getElementById('block');
        let temp;
        requestAnimationFrame(function measure(time) {
            let i = Math.ceil((time - prev) / delay % max);
            if (i && temp !== i) {
                block.insertAdjacentHTML("beforeEnd", `<b>${i}</b> `);//для проверки
                block.className = `active${i} block`;
                temp = i;
            }
            requestAnimationFrame(measure);

        })
    </script>
</body>

</html>

Uthvfy62 10.05.2024 00:48

Рони, спасибо тебе. Но только почему-то первый цикл идёт с опозданием, с задержкой. Появляется первое фото, потом белый экран 1-2 скекунды, потом появляется следующее фото. Потом снова белый экран 1-2 секунды. Это в 1ом цикле, во втором всё хорошо. И последующих.

рони 10.05.2024 01:50

Uthvfy62,
Цитата:

Сообщение от Uthvfy62
Появляется первое фото, потом белый экран 1-2 скекунды, потом появляется следующее фото.

гуглить предзагрузка изображений js

Uthvfy62 11.05.2024 07:47

предзагрузка изображений
 
я не нашёл ответ на этот вопрос. Видел разные варианты но ни один не помог. Может подскажите что-то толковое.

Uthvfy62 11.05.2024 08:02

И ещё к вам вопрос. Я на этом форуме задал ещё один вопрос. "вычислить ширину высоту блока" https://javascript.ru/forum/showthread.php?p=555299 Существует ли ответ на этот вопрос? Причём мне надо подогнать параметры блока именно по бэкграунду. И создавать новое изображение чтоб по нему подгонять параметры блока мне не подходит. Мне изображение там не нужно. Я избавился от картинки для того чтоб снова её туда засунуть? Нелепо получается. Возможно ли обойтись без фото? Вот скрипт который это делает, но подгоняет по созданной катринке, и удалить её невозможно. [html]<style>.block {
display: block;
width: 200px;
height: 200px;
/*background: url('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png') no-repeat center center;*/
background-size: auto auto;
}.block img {}</style>
<div id="block" class="block"></div>
<script type="text/javascript">var a = document.getElementById('block');
var img = new Image();
img.src = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png";
var b = a.offsetWidth;
var c = a.offsetHeight;
img.onload = function () {
var d = img.offsetWidth;
var e = img.offsetHeight;a.style.width=d;
a.style.height=e;}
a.appendChild(img);</script>[html]


Часовой пояс GMT +3, время: 18:50.