Здравствуйте. Идея такая, нужно запустить функцию stat при загрузке страницы и потом через каждые 5 секунд, и чтобы при клике по новой строке, выводилось содержимое атрибута. Как я это вижу: Код (Javascript): $(function() { star = function() { var r = Math.random(); var a = "<div class='active' atr='" + r + "'>" + r + "</div>"; $(".a1").after(a); tuc(); setTimeout(function(){ star(); }, 5000); }; star(); tuc = function() { $('.active').click(function () { var atr = $(this).attr('atr'); console.log(atr); return false; }); } }); HTML: <div> <div class='a1' id='a1'></div> </div> Этот вариант работает некорректно. Подскажите, как должно быть? Спасибо.
Каждые 5 секунд должно выводиться вот это: <div class='active' atr='random'>random</div>. И при клике по диву в консоль должен выводиться атрибут блока, по которому кликнули.
Можно подробнее? Я вот только так могу, добавить onclick='tuc();', но выдает "undefined". Код (Javascript): $(function() { star = function() { var r = Math.random(); var a = "<div class='active' onclick='tuc();' atr='" + r + "'>" + r + "</div>"; $(".a1").after(a); }; star(); setInterval(function(){star();}, 1000); tuc = function () { var atr = $(this).attr('atr'); console.log(atr); } });
@Parallelogram, так рекурсия же бесконечная как бы. Попробуй выводить отладку в консоль ты увидишь как работает она. По крайней мере твой код у меня работает до определенного времени, потом загрузка проца увеличивается и так лавинообразно пока не настанет момент жутких тормозов браузера.
mahmuzar, да я делал и с задержкой в 10ms, все нормально было (проц растет, но линейно, не лавинообразно). Вопрос в другом, как по клику определить атрибут блока по-которому кликнули? У меня выдает, что не определен.
Смотри лог всего элемента. Есть ли нужные тебе атрибуты. --- Добавлено --- т.е. console.log(this); --- Добавлено --- @Parallelogram, попробуй так Код (Javascript): $(function () { star = function () { var r = Math.random(); var a = "<div class='active' onclick='tuc(this)' atr='" + r + "'>" + r + "</div>"; $(".a1").after(a); }; star(); setInterval(function () { star(); }, 1000); tuc = function (e) { var atr = $(e).attr('atr'); console.log(atr); } });
Спасибо. Так работает --- Добавлено --- Подскажите, что я делаю не так? Теперь я хочу вывести не один, а два блока. При клике на один, я должен добавить произвольный класс в другой. Почему-то ничего не происходит( Код (Javascript): $(function () { star = function () { var r = Math.random(); var a = "<div class='active' onclick='tuc(this)' atrr1='" + r + "'>" + r + "</div>" + "<div class='active' style='color:#ddd;' atrr2='" + r + "'>" + r + "</div>"; $(".a1").after(a); }; star(); setInterval(function () { star(); }, 1000); tuc = function (e) { var atr = $(e).attr('atrr1'); $('div[atrr2="atr"]').addClass('asdasd'); } });
Почитай что такое отладка, посмотри инструменты разработчика google chrome, плагин firebug. Если по ним будут вопросы пиши.
Я бы дал тому div id пока идёт отладка, чтобы его запросить ono.id и точно знать что выбран нужный тег