powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / SetInterval
24 сообщений из 24, страница 1 из 1
SetInterval
    #39341406
vcsdvdsvsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<script>
var i=0;
arrGif=["fon/proekt1.jpg", "fon/proekt1.2.jpg"];
window.onload=function(){
setInterval(fn,1000);
}
function fn(){
document.getElementById("im").src=arrGif[i];
i++;
if(i>1)i=0;
}
</script>

<script>
var i=0;
arrGif=["fon/proekt2.jpg", "fon/proekt2.2.jpg"];
window.onload=function(){
setInterval(fn2,1000);
}
function fn2(){
document.getElementById("im2").src=arrGif[i];
i++;
if(i>1)i=0;
}
</script>


У меня написан такой скрип для двух таблиц, в каждой из которых должна меняться картинка, но меняется только во второй, а первая не работает. Что исправить надо?
...
Рейтинг: 0 / 0
SetInterval
    #39341457
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vcsdvdsvsdЧто исправить надо?записать в одном скрипте - это может навести на мысли .

i, arGif - общие для "обоих" скриптов (ибо в реальности скрипт - один, просто порезан на две части)
да и обработчик onload - тож один


достаточно иметь одну функцию и в ней переключать обе картинки
...
Рейтинг: 0 / 0
SetInterval
    #39341696
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vcsdvdsvsd,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<script>
(function(){
var i=0;
arrGif=["fon/proekt1.jpg", "fon/proekt1.2.jpg"];
window.onload=function(){
setInterval(fn,1000);
}
function fn(){
document.getElementById("im").src=arrGif[i];
i++;
if(i>1)i=0;
}
})();
</script>

<script>
(function() {
var i=0;
arrGif=["fon/proekt2.jpg", "fon/proekt2.2.jpg"];
window.onload=function(){
setInterval(fn2,1000);
}
function fn2(){
document.getElementById("im2").src=arrGif[i];
i++;
if(i>1)i=0;
}
})();
</script>



немножка доработал твой скрипт. проверь щас.
...
Рейтинг: 0 / 0
SetInterval
    #39341700
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vcsdvdsvsd,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<script>
function addWindowOnLoad(f) {
  if (window.addEventListener)
  {
    window.addEventListener('load', f, false);
  } 
  else if (window.attachEvent)
  {
    window.attachEvent('onload', f);
  }
}
</script>

<script>
(function(){
var i=0;
arrGif=["fon/proekt1.jpg", "fon/proekt1.2.jpg"];
addWindowOnLoad(function(){
setInterval(fn,1000);
});
function fn(){
document.getElementById("im").src=arrGif[i];
i++;
if(i>1)i=0;
}
})();
</script>

<script>
(function() {
var i=0;
arrGif=["fon/proekt2.jpg", "fon/proekt2.2.jpg"];
addWindowOnLoad(function(){
setInterval(fn2,1000);
});
function fn2(){
document.getElementById("im2").src=arrGif[i];
i++;
if(i>1)i=0;
}
})();
</script>



ещё забыл кое что. красным выделены добавления/изменения.
...
Рейтинг: 0 / 0
SetInterval
    #39341710
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vcsdvdsvsd,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<script>
var i=0;
var i2=0;

arrGif=["fon/proekt1.jpg", "fon/proekt1.2.jpg"];
arrGif2=["fon/proekt2.jpg", "fon/proekt2.2.jpg"];

window.onload=function(){
    setInterval(fn,1000);
    setInterval(fn2,1000);
}

function fn(){
    document.getElementById("im").src=arrGif[i];
    i = !i;
}

function fn2(){
    document.getElementById("im2").src=arrGif2[i2];
    i2 = !i2;
} 
</script>



а ещё лучше
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<script>
arrGif=[
  ['im', 0, ["fon/proekt1.jpg", "fon/proekt1.2.jpg"]], 
  ['im2', 0, ["fon/proekt2.jpg", "fon/proekt2.2.jpg"]]
];

window.onload=function(){
    setInterval(function(){fn(arrGif[0])},1000);
    setInterval(function(){fn(arrGif[1])},1000);
}

function fn(obj){
    document.getElementById(obj[0]).src=obj[2][obj[1]];
    obj[1] = !obj[1];
}
</script>



Если нигде не ошибся должно работать :) (не проверял)
...
Рейтинг: 0 / 0
SetInterval
    #39341762
vcsdvdsvsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрvcsdvdsvsd,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<script>
var i=0;
var i2=0;

arrGif=["fon/proekt1.jpg", "fon/proekt1.2.jpg"];
arrGif2=["fon/proekt2.jpg", "fon/proekt2.2.jpg"];

window.onload=function(){
    setInterval(fn,1000);
    setInterval(fn2,1000);
}

function fn(){
    document.getElementById("im").src=arrGif[i];
    i = !i;
}

function fn2(){
    document.getElementById("im2").src=arrGif2[i2];
    i2 = !i2;
} 
</script>



а ещё лучше
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<script>
arrGif=[
  ['im', 0, ["fon/proekt1.jpg", "fon/proekt1.2.jpg"]], 
  ['im2', 0, ["fon/proekt2.jpg", "fon/proekt2.2.jpg"]]
];

window.onload=function(){
    setInterval(function(){fn(arrGif[0])},1000);
    setInterval(function(){fn(arrGif[1])},1000);
}

function fn(obj){
    document.getElementById(obj[0]).src=obj[2][obj[1]];
    obj[1] = !obj[1];
}
</script>



Если нигде не ошибся должно работать :) (не проверял)

первые картинки появляются, а потом значок, показывающий, что нету картинки
...
Рейтинг: 0 / 0
SetInterval
    #39341848
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vcsdvdsvsd,

хм... не любит js в виде ключей массива использовать true/false :) Не знал... думал он их к числам приведёт.
Ну тогда так:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    <script>
        arrGif=[
          ['im', 0, ["fon/proekt1.jpg", "fon/proekt1.2.jpg"]], 
          ['im2', 0, ["fon/proekt2.jpg", "fon/proekt2.2.jpg"]]
        ];

        window.onload=function(){
            setInterval(function(){fn(arrGif[0])},1000);
            setInterval(function(){fn(arrGif[1])},1000);
        };

        function fn(obj){
            document.getElementById(obj[0]).src=obj[2][obj[1]];
            obj[1] = obj[1] ^ 1;
        }
    </script>



На этот раз проверил. Работает.
...
Рейтинг: 0 / 0
SetInterval
    #39341951
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрНе знал... думал он их к числам приведёт.
матчасть изучай.

obj[1] = obj[1] ^ 1; - образец говногода

обобщи на N картинок - и увидишь
...
Рейтинг: 0 / 0
SetInterval
    #39341962
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПрограмёрНе знал... думал он их к числам приведёт.
матчасть изучай.

obj[1] = obj[1] ^ 1; - образец говногода

обобщи на N картинок - и увидишь

тут нет N картинок. А код должен быть максимально понятным. В случае с переключением между двумя состояниями (картинками) этот вариант самый понятный (то есть если включено - выключаем, если выключено - включаем)! Если состояний станет больше двух, то разумеется этот код следует переписать, но опять же так, что бы он был максимально понятен.
...
Рейтинг: 0 / 0
SetInterval
    #39341986
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрно опять же так, что бы он был максимально понятен.

если значение логическое - лучше щёлкать true/false, чем битом манипулировать
напоминает старую байку - "как изменить значение переменной i 1 на 2, а 2 на 1"
ответ математика 3-i
...
Рейтинг: 0 / 0
SetInterval
    #39341989
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПрограмёрно опять же так, что бы он был максимально понятен.

если значение логическое - лучше щёлкать true/false, чем битом манипулировать
напоминает старую байку - "как изменить значение переменной i 1 на 2, а 2 на 1"
ответ математика 3-i

Дык true/false и щёлкал. Но для использования как ключ массива его надо к числу приводить. Не знаю как другим, а мне это не удобно (слишком много преобразований для банального вкл/выкл). В то же время операция A ^ 1 у меня ассоциируется с включением-выключением некого флага (переключателя)

ну и в общем случае операция A ^ B ассоциируется с "изменить состояние всех переключателей в A, отмеченных в B единицей"


Но вообще это не настолько принципиальное изменение, потому не вижу смысла спорить на эту тему. Кому как удобнее, так пускай и пишет эти 1-2 строки кода :) Я много более значимых правок в код автора внёс...
...
Рейтинг: 0 / 0
SetInterval
    #39341990
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПрограмёрно опять же так, что бы он был максимально понятен.

если значение логическое - лучше щёлкать true/false, чем битом манипулировать
напоминает старую байку - "как изменить значение переменной i 1 на 2, а 2 на 1"
ответ математика 3-i

А оригинальная задача так и звучит? Я честно такой не слышал... Обычно звучит задача "как поменять местами значения целочисленных переменных A и B". И тут никакое "отнять от 3" не прокатит.

Но даже при этом, чем 3 - i лучше чем i ^ 3? При указанной формулировке задачи - вообще ничем. Разве нет?
...
Рейтинг: 0 / 0
SetInterval
    #39341994
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрВ то же время операция A ^ 1 у меня ассоциируется с включением-выключением некого флага (переключателя)
подобный вопрос недавно обсуждался со сдвигом и умножением на степень двойки.
если по сути задачи умножение - умножать и нужно, конкретные команды - это забота компилятора
если переменная Boolean - то и инвертировать нужно не какой-то бит, а булево значение честной операцией !

ЗЫ сишные приколы )))
...
Рейтинг: 0 / 0
SetInterval
    #39341995
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрНо даже при этом, чем 3 - i лучше чем i ^ 3? При указанной формулировке задачи - вообще ничем. Разве нет?
оба хуже (с)
ПрограмёрА оригинальная задача так и звучит?
это не задача, это шутка
автор[вернуться к списку рассказов "Задачи и тесты"]

Переменная I представляет собой целое число. I принимает значения 1 или 2. Если I оказалось равным 1, то замените его на 2, и наоборот.

Сравните ваше решение с десятью предложенными. Найдите одно или несколько наиболее похожих на ваше и прочитайте в разделе "Категории" краткую характеристику.
Вы можете кодировать на любом языке, но для сравнения предпочтительнее использовать PL/1.

Решения:
IF I='2' THEN I=1;
ELSE I=2;

IF I=2 THEN I=1;
IF I=1 THEN I=2;

IF I=1 THEN GOTO SKIP;
I=1;
GOTO DONE;
SKIP:I=2;
DONE:

J=2;
IF I=2 THEN J=1;
I=J;

DECLARE SWITCH LABEL;
IF I=1 THEN SWITCH=ONE;
IF I=2 THEN SWITCH=TWO;
GOTO SWITCH;
ONE: I=2;
GOTO DONE;
TWO: I=1;
DONE:

DECLARE ONETWO(2) FIXED BIN(31) INIT(2,1);
I=ONETWO(I);

I=3-I;

I=I-(I/2*2)+1;

IF I=2
THEN DO;
I=1;
END;
ELSE DO;
I=2;
END;

IF I=1 THEN I=2; ELSE DO;IF I=2 THEN I=1; ELSE DO;
PUT LIST('НЕДОПУСТИМОЕ ЗНАЧЕНИЕ I: ',I,' ЗАМЕНЕНО НА 1');
I=1;
END;END;

Категории:
Недавний выпускник школы IBM. Не более одного из десяти окончивших эту школу знают разницу между 2 и "2". Удивительно, как можно вообще программировать без знания столь фундоментальных понятий.
Преподаватель программирования. Это решение хуже предыдущего. Много ли, однако, обучающих программированию сами написали и отладили хотя бы одну программу?
Программист на Фортране, только что закончивший курсы по PL/1. Да, старую собаку не научишь новым штукам! Это решение дает верный результат, но это всё, что можно про него сказать.
Программист на Ассемблере, прошедший тот же курс. Это решение не является ни прямым, ни эффективным. В нём есть та прелесть, что оно не содержит самомодифицирующихся кодов, но это лишь результат возврата на землю после изучения языка высокого уровня.
Системный аналитик. Прекрасная иллюстрация для тех, кто думает, что главная обязанность системного аналитика - это разработка такого алгоритма, в котором окажется некомпетентным даже хороший и опытный программист.
Computer scientist. Наверное, это самое умное решение. Однако такое "сальто-мортале" без комментариев оказывается весьма непонятным. Искусство требует жертв, а жертвой будет тот, кто будет разбираться в этой программе - может быть, сам автор спустя три месяца.
Математик. Очень похоже на предыдущее, столь же элегантно, но опять-таки та же проблема: как в этом разобраться?
Секретчик. Программист, заботящийся о секретности своей программы. Вот работа настоящего композитора, и, конечно, никаких комментариев. "Я могла бы придумать и более запутанный способ, как это сделать", - с гордостью сказала Белая Королева.
Структурный программист. Каждому ясно, что сие произведение - структурная программа. Но структурная программа характеризуется не отступами от края листа, а прежде всего наличием внутренней логики.
Хороший программист. Заметьте, что ни одно из предыдущих решений не проверяло диапазон значений I, а это весьма опасно. Вас не спасет ни структурность, ни фантастические алгоритмы, ни элегантность решения, если вдруг окажется, что I первоначально не было равно ни единице, ни двойке.
...
Рейтинг: 0 / 0
SetInterval
    #39341997
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрЯ много более значимых правок в код автора внёс...
вносил бы уж до конца ))
Код: javascript
1.
2.
3.
4.
        arrImg=[
          {id:'im' , index:0, list:["fon/proekt1.jpg", "fon/proekt1.2.jpg"]}, 
          {id:'im2', index:0, list:["fon/proekt2.jpg", "fon/proekt2.2.jpg"]}
        ];
...
Рейтинг: 0 / 0
SetInterval
    #39342001
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПрограмёрЯ много более значимых правок в код автора внёс...
вносил бы уж до конца ))
Код: javascript
1.
2.
3.
4.
        arrImg=[
          {id:'im' , index:0, list:["fon/proekt1.jpg", "fon/proekt1.2.jpg"]}, 
          {id:'im2', index:0, list:["fon/proekt2.jpg", "fon/proekt2.2.jpg"]}
        ];



Мог бы, да зачем? Что бы новичёк убежал с круглыми глазами крича "да какие массивы! какие объекты! Достало, пойду лучше китайский учить"?

Это решение было направлена на новичка, а потому на минимальное количество "нового" и при этом более правильное оперирование "старым".

P.S. я же не могу ванговать, что бы узнать учится ли он или просто на собственном сайте, например, пытается мигание картинок сделать (потому скопипастил где-то и просит поправить что бы работало). А если учится - то заваливать его кучей новых типов данных - далеко не лучшее решение.
...
Рейтинг: 0 / 0
SetInterval
    #39342004
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрда какие массивы
страшные они в примере и нечитаемые
...
Рейтинг: 0 / 0
SetInterval
    #39342011
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПрограмёрда какие массивы
страшные они в примере и нечитаемые

ну... нравится id, index, list - делай id, index, list :)) Не суть важно. Я же не пытаюсь спорить что так как я сделал - лучше...
...
Рейтинг: 0 / 0
SetInterval
    #39342016
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

Я вот тут прочитал тред и.. вы хотя бы поняли, что «window.onload= » это не правильно? Мдя...
...
Рейтинг: 0 / 0
SetInterval
    #39342019
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПрограмёр,

Я вот тут прочитал тред и.. вы хотя бы поняли, что «window.onload= » это не правильно? Мдя...

я бы не стал говорить "неправильно"... скорее "плохо". Для лучшего понимания вообще следует сказать "использование window.onload не является хорошей практикой". Так можно делать, но если пишешь что-то серьёзное, то явно так делать не стоит.

А к чему это вообще сказано было? :))
...
Рейтинг: 0 / 0
SetInterval
    #39342022
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёря бы не стал говорить "неправильно"... скорее "плохо". Для лучшего понимания вообще следует сказать "использование window.onload не является хорошей практикой". Так можно делать, но если пишешь что-то серьёзное, то явно так делать не стоит.

А к чему это вообще сказано было? :))

Отличный вопрос! Сказано это было к тому, что ТС просил, цитирую: «Что исправить надо?», т.е. надо было поправить его код, чтобы он заработал, а не переписывать по-своему (да ещё и с грубыми ошибками). Чтобы он понял в чём косяк. Совершенно другой код ему этого ответа не даст, хотя конечно он и сможет его скопипастить, это будет медвежья услуга.

В дальнейшем он мог бы спросить: как можно улучшить этот код? Ну или попросить варианты решения его задачи, и это был бы уже совсем другой разговор.

Вот к чему это было сказано.
...
Рейтинг: 0 / 0
SetInterval
    #39342042
vcsdvdsvsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрvcsdvdsvsd,

хм... не любит js в виде ключей массива использовать true/false :) Не знал... думал он их к числам приведёт.
Ну тогда так:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    <script>
        arrGif=[
          ['im', 0, ["fon/proekt1.jpg", "fon/proekt1.2.jpg"]], 
          ['im2', 0, ["fon/proekt2.jpg", "fon/proekt2.2.jpg"]]
        ];

        window.onload=function(){
            setInterval(function(){fn(arrGif[0])},1000);
            setInterval(function(){fn(arrGif[1])},1000);
        };

        function fn(obj){
            document.getElementById(obj[0]).src=obj[2][obj[1]];
            obj[1] = obj[1] ^ 1;
        }
    </script>



На этот раз проверил. Работает.

всё работает, спасибо большое!
спасибо всем!
...
Рейтинг: 0 / 0
SetInterval
    #39342133
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПрограмёря бы не стал говорить "неправильно"... скорее "плохо". Для лучшего понимания вообще следует сказать "использование window.onload не является хорошей практикой". Так можно делать, но если пишешь что-то серьёзное, то явно так делать не стоит.

А к чему это вообще сказано было? :))

Отличный вопрос! Сказано это было к тому, что ТС просил, цитирую: «Что исправить надо?», т.е. надо было поправить его код, чтобы он заработал, а не переписывать по-своему (да ещё и с грубыми ошибками). Чтобы он понял в чём косяк. Совершенно другой код ему этого ответа не даст, хотя конечно он и сможет его скопипастить, это будет медвежья услуга.

В дальнейшем он мог бы спросить: как можно улучшить этот код? Ну или попросить варианты решения его задачи, и это был бы уже совсем другой разговор.

Вот к чему это было сказано.

У Вас странный подход к обучению. Вы считаете, что на человека, который только вникает в суть языка (а похоже что и в суть самого программирования) сразу надо вываливать весь объём информации имеющийся в нашей сфере?

Что бы понять что Вы написали, автору надо:
1. Понять как правильно вешаются обработчики событий
2. Узнать что такое контекст выполнения и что это за конструкция (function(){})(). А также освоить области видимости переменных.

Что бы понять мой код автору надо... почитать про бинарные операции, что является основой программирования, и изучаются наравне с математическими операциями и вызовом функций.

В общем, рекомендую посмотреть курс CS50. Очень сильно меняет понимание правильного подхода к обучению. У них там всё обучение строится по схеме:
1. Ввести маленькую порцию нового
2. Пояснить и показать примеры использования (в том числе с использованием плохих практик)
3. Маленькими шагами исключить всё "плохое" в коде поясняя суть, причину и результат каждого шага.
4. Закрепить получившейся результат и перейти к пункту 1.

И знаете, это интересно... это удобно... это понятно. Сразу видно что студенты не сидят и не начинают тупить, а включаются в работу и всё (или почти всё) понимают.
...
Рейтинг: 0 / 0
SetInterval
    #39342237
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрУ Вас странный подход к обучению. Вы считаете, что на человека, который только вникает в суть языка (а похоже что и в суть самого программирования) сразу надо вываливать весь объём информации имеющийся в нашей сфере?

Где конкретно из моих слов следует про весь объём информации? Я сказал ровно противоположное. О конкретной неисправности, а именно: подписка на событие и изоляция (замыкание). Неужели для вас это и есть тот самый «весь объём информации»? Печально.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / SetInterval
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]