Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отптимизация скрипта (https://javascript.ru/forum/dom-window/24938-otptimizaciya-skripta.html)

RazZzeR 19.01.2012 17:21

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

оптимизируйте мне пожалуйста вот эту громадину

setTimeout(function(){
$('audio_call').innerHTML= 'Позвонить (4)';
$('video_call').innerHTML = 'Видеозвонок (4)';
}, "1000");
setTimeout(function(){
$('audio_call').innerHTML= 'Позвонить (3)';
$('video_call').innerHTML = 'Видеозвонок (3)';
}, "2000");
setTimeout(function(){
$('audio_call').innerHTML= 'Позвонить (2)';
$('video_call').innerHTML = 'Видеозвонок (2)';
}, "3000");
setTimeout(function(){
$('audio_call').innerHTML= 'Позвонить (1)';
$('video_call').innerHTML = 'Видеозвонок (1)';
}, "4000");



как-нибудь в одно выражение с повторением цикла :)

RazZzeR 19.01.2012 17:21

будет наглядным примером как оптимизировать подобные куски кода

trikadin 19.01.2012 18:27

var i=4;
var  audio= $("audio_call");
var video= $('video_call')

setTimeout(*!*function a()*/!*{
 audio.innerHTML= 'Проблемы с кодировкой (' + i+ ")";
 video.innerHTML = 'Проблемы с кодировкой (' +i + ')';
 if (--i) // то есть если он не превратился в ноль после этой операции
  setTimeout(a, 1000);
}, 1000)

RazZzeR 19.01.2012 19:46

четко, спасибо

devote 19.01.2012 19:54

Цитата:

Сообщение от trikadin
setTimeout(function a(){

тока вот эта конструкция боюсь в старых браузерах работать не будет.

devote 19.01.2012 19:56

для старых браузеров нужно делать так:
var i=4;
var  audio= $("audio_call");
var video= $('video_call')
 
setTimeout(function(){
 audio.innerHTML= 'Проблемы с кодировкой (' + i+ ")";
 video.innerHTML = 'Проблемы с кодировкой (' +i + ')';
 if (--i) // то есть если он не превратился в ноль после этой операции
  setTimeout(arguments.callee, 1000);
}, 1000)

RazZzeR 19.01.2012 20:24

в старой мозиле неработало, и заработало.
функция в функции там неподдерживается вроде

trikadin 19.01.2012 23:17

Цитата:

Сообщение от devote
тока вот эта конструкция боюсь в старых браузерах работать не будет.

Нахрен их) А вообще - использовать arguments.callee - моветон. Просто объявите ф-цию заранее (всё равно вы ещё и другие переменные объявляете).

devote 19.01.2012 23:19

Цитата:

Сообщение от trikadin
А вообще - использовать arguments.callee - моветон.

ну это для strict моветон, а для обычного режима нормально.

trikadin 19.01.2012 23:24

Цитата:

Сообщение от devote
ну это для strict моветон, а для обычного режима нормально.

Дык их же убрать всё собираются. Так напорешься на то, что оно в новых браузерах не работает...


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