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

kyt 30.11.2014 00:46

bes Так с алертом и у меня работает:)
рони $(window).load - картины не меняет.
С алертом работает.
Без алерта ячейки не красятся. Сейчас проверю Вашу функцию.

bes 30.11.2014 00:47

Цитата:

Сообщение от kyt
bes Так с алертом и у меня работает

ок :)
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>

<style>
td {
	border: solid 1px;
}
.active {
	background: green;
}
</style>

<div class="table"></div>

<script>
$(document).ready(function() {
	var str = "<table id='my_table'><tr>";
	for (var i = 1; i < 28; i++) {
		str += "<td>" + i + "</td>";
	}
	str += "<td>1</td></tr></table>";
	document.querySelector(".table").innerHTML = str;
		//alert ('Красим ячейки!');
			$('#my_table td:nth-child(28)').each(function () {
				if(this.innerHTML == '1') {
					$(this).closest("tr").addClass("active");
				}
			});
});
</script>

MallSerg 30.11.2014 00:53

Как это в отпуске???
Все дело в том что ячейки добавляются с помощью JavaScript но уже после того как выполняется код который раскрашивает ячейки.

алерт просто приостанавливает выполнение скрипта и ячейки успевают появится в документе.

kyt 30.11.2014 00:55

bes, Вы правы у Вас работает и у меня Ваш пример работает. И с алертом и без. А мой не работает. Попробую его локализовать.

bes 30.11.2014 00:56

Цитата:

Сообщение от MallSerg
Как это в отпуске???
Все дело в том что ячейки добавляются с помощью JavaScript но уже после того как выполняется код который раскрашивает ячейки.

алерт просто приостанавливает выполнение скрипта и ячейки успевают появится в документе.

а $(document).ready тогда к чему, если предположить, что он таблицу нарисовал позже скрипта и не при помощи js

bes 30.11.2014 01:02

так, естественно, не работает, но и ячейки раньше времени не появляются
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>

<style>
td {
	border: solid 1px;
}
.active {
	background: green;
}
</style>

<div class="table"></div>

<script>
$(document).ready(function() {
		alert ('Красим ячейки!');
			$('#my_table td:nth-child(28)').each(function () {
				if(this.innerHTML == '1') {
					$(this).closest("tr").addClass("active");
				}
			});
	var str = "<table id='my_table'><tr>";
	for (var i = 1; i < 28; i++) {
		str += "<td>" + i + "</td>";
	}
	str += "<td>1</td></tr></table>";
	document.querySelector(".table").innerHTML = str;
});
</script>

bes 30.11.2014 01:02

Цитата:

Сообщение от kyt
bes, Вы правы у Вас работает и у меня Ваш пример работает. И с алертом и без. А мой не работает. Попробую его локализовать.

в консоли ошибок нет?

kyt 30.11.2014 01:02

Я думаю заменить alert на setTimeout. Я о том думаю?

kyt 30.11.2014 01:03

bes ошибок в консоли нет

bes 30.11.2014 01:04

выложи на http://jsfiddle.net/ или http://learn.javascript.ru/play


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