Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / javascript in Apex / 6 сообщений из 6, страница 1 из 1
24.06.2013, 02:35
    #38307737
javascript in Apex
Подскажите пожалуйста, такая проблема. Есть таймер обратного отсчета
Код: 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
24.06.2013, 04:28
    #38307755
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript in Apex
Яков Соломоныч,

событие 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
24.06.2013, 04:43
    #38307756
javascript in Apex
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
24.06.2013, 04:48
    #38307757
javascript in Apex
Как ни странно другой вариант этого таймера, без сохранения в куки работает в апексе на ура!
Код: 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
26.06.2013, 12:14
    #38310976
Casufi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javascript in Apex
Яков СоломонычПодскажите пожалуйста, такая проблема. Есть таймер обратного отсчета
Таймер сами писали или из контекста выдран ?
Я вообще не могу понять первую строку, Firefox тоже не догадывается как она должна работать.
Вот этот кусок
Код: javascript
1.
if (!timer) {clearInterval (TMR); return}


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


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