powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / javascript in Apex
6 сообщений из 6, страница 1 из 1
javascript in Apex
    #38307737
Подскажите пожалуйста, такая проблема. Есть таймер обратного отсчета
Код: 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.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script>
var s = (document.cookie) document.cookie.split ('; ') [0].split ('=') [1] ? : 600;
if (!s) document.write ('Время истекло');
 
function s24 (x)
{
function ad0 (x) {return ((x < 10) ? '0' : '') + x}
var ms = x % 3600, h = (x - ms) / 3600, s = ms % 60, m = (ms - s) / 60;
return [ad0 (h), ad0 (m), ad0 (s)].join (':');
}
onload = function ()
{
document.getElementById ('timer').innerHTML = s24 (s);
TMR = setInterval (function ()
{
if (!timer) {clearInterval (TMR); return}
document.getElementById ('timer').innerHTML = s24 (--s);
document.cookie = 'myTimer=' + s + '; expires=' +
                   new Date (new Date ().getTime () + 182 * 24 * 60 * 60 * 1000);
}, 1000);
}
</script>
</head>
<body>
<span id="timer"></span>
</body>
</html>


Помещаю в Edit page в поле Javascript/Execute when Page Loads
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
{
var s = (document.cookie) document.cookie.split ('; ') [0].split ('=') [1] ? : 600;
if (!s) document.write ('Время истекло');
 
function s24 (x)
{
function ad0 (x) {return ((x < 10) ? '0' : '') + x}
var ms = x % 3600, h = (x - ms) / 3600, s = ms % 60, m = (ms - s) / 60;
return [ad0 (h), ad0 (m), ad0 (s)].join (':');
}
onload = function ()
{
document.getElementById ('timer').innerHTML = s24 (s);
TMR = setInterval (function ()
{
if (!timer) {clearInterval (TMR); return}
document.getElementById ('timer').innerHTML = s24 (--s);
document.cookie = 'myTimer=' + s + '; expires=' +
                   new Date (new Date ().getTime () + 182 * 24 * 60 * 60 * 1000);
}, 1000);
}


ниже прямо в хейдер сцылю <span id="timer"></span>
Но В итоге ничего не работает. Сам таймер рабочий. В чем беда - не понятно
...
Рейтинг: 0 / 0
javascript in Apex
    #38307755
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яков Соломоныч,

событие onload, для которого Вы присваиваете обработчик в виде анонимной функции, на обычной странице в Вашем примере выполнится после загрузки. А в APEX весь этот код будет интерпретирован уже после события onload, раз Вы его закинули в Execute when Page Loads. То есть, обработчик для события будет присвоен уже после того, как событие произошло.

Попробуйте переписать следующим образом:
Код: 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.
var s = (document.cookie) document.cookie.split ('; ') [0].split ('=') [1] ? : 600;
if (!s) document.write ('Время истекло');
 
function s24( x ){
  function ad0 ( x ) {
    return ((x < 10) ? '0' : '') + x;
  }
  
  var ms = x % 3600, h = (x - ms) / 3600, s = ms % 60, m = (ms - s) / 60;
  
  return [ad0 (h), ad0 (m), ad0 (s)].join (':');
}

$( "#timer" ).html( s24 ( s ) );

TMR = setInterval ( function () {
  if (!timer) {
    clearInterval (TMR); 
    return;
  }
  
  $( "#timer" ).html( s24 ( --s ) );
  document.cookie = 'myTimer=' + s + '; expires=' +
                   new Date (new Date ().getTime () + 182 * 24 * 60 * 60 * 1000);
}, 1000);



В выделенном сомневаюсь, потому что не вижу объявления переменной timer.

PS: Особо не вчитывался из-за своеобразного форматирования Вашего кода.
...
Рейтинг: 0 / 0
javascript in Apex
    #38307756
suPPLerЯков Соломоныч,

событие onload, для которого Вы присваиваете обработчик в виде анонимной функции, на обычной странице в Вашем примере выполнится после загрузки. А в APEX весь этот код будет интерпретирован уже после события onload, раз Вы его закинули в Execute when Page Loads. То есть, обработчик для события будет присвоен уже после того, как событие произошло.

Попробуйте переписать следующим образом:
Код: 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.
var s = (document.cookie) document.cookie.split ('; ') [0].split ('=') [1] ? : 600;
if (!s) document.write ('Время истекло');
 
function s24( x ){
  function ad0 ( x ) {
    return ((x < 10) ? '0' : '') + x;
  }
  
  var ms = x % 3600, h = (x - ms) / 3600, s = ms % 60, m = (ms - s) / 60;
  
  return [ad0 (h), ad0 (m), ad0 (s)].join (':');
}

$( "#timer" ).html( s24 ( s ) );

TMR = setInterval ( function () {
  if (!timer) {
    clearInterval (TMR); 
    return;
  }
  
  $( "#timer" ).html( s24 ( --s ) );
  document.cookie = 'myTimer=' + s + '; expires=' +
                   new Date (new Date ().getTime () + 182 * 24 * 60 * 60 * 1000);
}, 1000);



В выделенном сомневаюсь, потому что не вижу объявления переменной timer.

PS: Особо не вчитывался из-за своеобразного форматирования Вашего кода.
Вставил ваше изменение. Результат нулевой=( Не отображается ничего...
...
Рейтинг: 0 / 0
javascript in Apex
    #38307757
Как ни странно другой вариант этого таймера, без сохранения в куки работает в апексе на ура!
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var timer = 600;
function s24 (x)
{
function ad0 (x) {return ((x < 10) ? '0' : '') + x}
var ms = x % 3600, h = (x - ms) / 3600, s = ms % 60, m = (ms - s) / 60;
return [ad0 (h), ad0 (m), ad0 (s)].join (':');
}
onload = function ()
{
document.getElementById ('timer').innerHTML = s24 (timer);
TMR = setInterval (function ()
{
if (!timer) {clearInterval (TMR); return}
document.getElementById ('timer').innerHTML = s24 (--timer);
}, 1000);
}


Но данный вариант при обновлении начинает щелкать по новой и в этом его проблема
...
Рейтинг: 0 / 0
javascript in Apex
    #38310976
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яков СоломонычПодскажите пожалуйста, такая проблема. Есть таймер обратного отсчета
Таймер сами писали или из контекста выдран ?
Я вообще не могу понять первую строку, Firefox тоже не догадывается как она должна работать.
Вот этот кусок
Код: javascript
1.
if (!timer) {clearInterval (TMR); return}


Где объявлена переменная timer ?
...
Рейтинг: 0 / 0
javascript in Apex
    #38310983
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ
Ни в одном из броузеров у меня html файл из первого примера не заработал.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / javascript in Apex
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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