Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Необходимость alert перед функцией (https://javascript.ru/forum/jquery/52003-neobkhodimost-alert-pered-funkciejj.html)

MallSerg 30.11.2014 01:57

по тому что setTimeout это функция
т.е. то что ты пишешь в скобках это параметры этой функции они вычисляются в момент вызова данной функции
вызов функции ни как не тормозит выполнения кода просто когда то в далеком будущем наступит событие timeout
и будет выполнен первый параметр функции setTimeout

bes 30.11.2014 09:25

Цитата:

Сообщение от MallSerg
по тому что setTimeout это функция
т.е. то что ты пишешь в скобках это параметры этой функции они вычисляются в момент вызова данной функции
вызов функции ни как не тормозит выполнения кода просто когда то в далеком будущем наступит событие timeout
и будет выполнен первый параметр функции setTimeout

я правильно понял, что ты утверждаешь, что первый параметр setTimeout, то есть func или code из цитаты ниже будет вычислен в момент вызова setTimeout?

но всё это рушится по описанию ниже
https://developer.mozilla.org/en-US/...ers.setTimeout
Цитата:

Calls a function or executes a code snippet after a specified delay.

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]); var timeoutID = window.setTimeout(code, delay);
и при простейшей проверке с регулировкой delay


Цитата:

Сообщение от kyt
А в чем тогда проблема setTimeout?

Цитата:

Сообщение от kyt
Замена alert на setTimeout(function() { }, 500) проблемы не решает.
Ошибок нет, ячейки не крашеные

должно решать, если ты сделаешь хотя бы так
setTimeout(function () {
	$('#my_table td:nth-child(28)').each(function () {
		if(this.innerHTML == '1') {
			$(this).closest("tr").addClass("active");
		}
	});
},*!*5000*/!*);

но сам понимаешь, какое качество кода получится: любая случайная задержка в ответе более N выставленных секунд и твой код перестанет работать

чтобы окончательно убедиться можешь добавить console.log и посмотреть перед сравнением какое значение в ячейке
$('#my_table td:nth-child(28)').each(function() {
            console.log(this.innerHTML);
            if(this.innerHTML=='1'){


а в целом, это элементарные действия по тестированию нерабочего кода (убрать лишнее, наалертить/наконсольлогить), поэтому прочти и это http://javascript.ru/forum/site/4917...u-zapuska.html
и надеюсь теперь ты понимаешь, насколько ущербен твой исходный пост :)

MallSerg 30.11.2014 11:05

Цитата:

Сообщение от bes
я правильно понял, что ты утверждаешь, что первый параметр setTimeout, то есть func или code из цитаты ниже будет вычислен в момент вызова setTimeout?

Попытаюсь объяснить совсем на пальцах
небольшой пример «setTimeout ( a + b , 100 )»
это вызов функции в котором первым параметром идет JS выражение и оно будет вычислено еще до вызова функции
В случае «setTimeout ( function () {} , 100 )» первым параметром тоже идет выражение и оно так же будет вычислено (интерпретировано) до вызова setTimeout результатом вычисления данного выражения будет функция
т.е. по пунктам:
1. вычисляется выражение JS (выражение возвращает безыменную функцию)
2. происходит вызов setTimeout
3. наступает событие timeout в котором происходит вызов безымянной функции

kyt 30.11.2014 12:30

Загадка разрешилась именно так как сказал bes.
Там долго тянулись данные из Ajax, потом перестраивалась таблица...
Была найдена функция
fnCreatedRow http://legacy.datatables.net/usage/callbacks и все заработало без alert.
Остается вопрос про setTimeout.
Мне не удалось адекватно запустить http://datatables.net/reference/option/ajax Если кто-то возьмется мне это пояснить за разумную мзду. Пожалуйста, напишите мне.

kyt 30.11.2014 12:32

Оп, не обновил

kyt 30.11.2014 12:43

Цитата:

Сообщение от bes (Сообщение 343537)
а в целом, это элементарные действия по тестированию нерабочего кода (убрать лишнее, наалертить/наконсольлогить), поэтому прочти и это http://javascript.ru/forum/site/4917...u-zapuska.html
и надеюсь теперь ты понимаешь, насколько ущербен твой исходный пост :)

Ну да, понимаю. И раскаиваюсь:)
Если бы я сразу сообразил как эту штуку локализовать и выложить, так бы и сделал.
Буду учить мат. часть и писать неущербные посты.

bes 30.11.2014 12:54

Цитата:

Сообщение от kyt
Мне не удалось адекватно запустить http://datatables.net/reference/option/ajax Если кто-то возьмется мне это пояснить за разумную мзду. Пожалуйста, напишите мне.

сейчас, только дочитаю :D

http://datatables.net/reference/option/ajax
Цитата:

function ajax( data, callback, settings )
Description:
As a function, making the Ajax call is left up to yourself allowing complete control of the Ajax request. Indeed, if desired, a method other than Ajax could be used to obtain the required data, such as Web storage or an AIR database.

When the data has been obtained from the data source, the second parameter (callback here) should be called with a single parameter passed in - the data to use to draw the table.
в этом случае, как и написано, ты полностью берёшь контроль по отправке запроса за данными и обработки их при получении, всё остальное дело практики


Цитата:

Сообщение от kyt
Остается вопрос про setTimeout.

в чём он?

kyt 30.11.2014 12:57

Цитата:

Сообщение от bes (Сообщение 343558)
в чём он?

Нет уже этого вопроса, не обновил страницу, когда писал ответ.

bes 30.11.2014 12:58

Цитата:

Сообщение от kyt
Была найдена функция
fnCreatedRow http://legacy.datatables.net/usage/callbacks и все заработало без alert.

ах вот где они :)
на мой взляд, представление документации на их сайте страдает, хотя бы потому что на usage не выйдешь из меню на главной странице http://datatables.net/
а надо ещё каким-то образом добраться до http://legacy.datatables.net/

bes 30.11.2014 13:01

вообще ж-па :)

http://datatables.net/manual/index
маленькими буквами
Цитата:

Version information:
The documentation here is for DataTables 1.10 and newer. Documentation for earlier versions of DataTables is available on the legacy site, although it is recommended you upgrade where possible.


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