За последние 24 часа нас посетили 19633 программиста и 1604 робота. Сейчас ищут 1805 программистов ...

Не могу заставить работать функцию

Тема в разделе "JavaScript и AJAX", создана пользователем Parallelogram, 25 апр 2016.

  1. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте. Идея такая, нужно запустить функцию stat при загрузке страницы и потом через каждые 5 секунд, и чтобы при клике по новой строке, выводилось содержимое атрибута.
    Как я это вижу:
    Код (Javascript):
    1. $(function() {
    2.         star = function() {
    3.             var r = Math.random();
    4.             var a = "<div class='active' atr='" + r + "'>" + r + "</div>";
    5.             $(".a1").after(a);
    6.             tuc();
    7.             setTimeout(function(){
    8.                 star();
    9.             }, 5000);
    10.         };
    11.         star();
    12.  
    13.   tuc = function() {
    14.         $('.active').click(function () {
    15.             var atr = $(this).attr('atr');
    16.             console.log(atr);
    17.             return false;
    18.         });
    19.     }
    20. });
    HTML:
    1. <div>
    2.     <div class='a1' id='a1'></div>
    3. </div>
    Этот вариант работает некорректно. Подскажите, как должно быть?
    Спасибо.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ничего не понятно
     
  3. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Каждые 5 секунд должно выводиться вот это: <div class='active' atr='random'>random</div>. И при клике по диву в консоль должен выводиться атрибут блока, по которому кликнули.
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Для клика тебе нужно смотреть в сторону - on (( :
     
    denis01 нравится это.
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @Parallelogram, всегда true цикл и таймер внутри цикла.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  7. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Можно подробнее? Я вот только так могу, добавить onclick='tuc();', но выдает "undefined".
    Код (Javascript):
    1. $(function() {
    2.     star = function() {
    3.         var r = Math.random();
    4.         var a = "<div class='active' onclick='tuc();' atr='" + r + "'>" + r + "</div>";
    5.         $(".a1").after(a);
    6.     };
    7.     star();
    8.  
    9.     setInterval(function(){star();}, 1000);
    10.  
    11.     tuc = function () {
    12.         var atr = $(this).attr('atr');
    13.         console.log(atr);
    14.     }
    15. });
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    что цикл что бесконечная рекурсия :)

    @Parallelogram, у тебя страница не виснет?
     
  9. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Нет, зачем ей виснуть?
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @Parallelogram, так рекурсия же бесконечная как бы.
    Попробуй выводить отладку в консоль ты увидишь как работает она. По крайней мере твой код у меня работает до определенного времени, потом загрузка проца увеличивается и так лавинообразно пока не настанет момент жутких тормозов браузера.
     
  11. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    mahmuzar, да я делал и с задержкой в 10ms, все нормально было (проц растет, но линейно, не лавинообразно). Вопрос в другом, как по клику определить атрибут блока по-которому кликнули? У меня выдает, что не определен.
     
  12. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    навесить обработчик onclick на элемент.
     
  13. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    mahmuzar, да я так и сделал. Не хочет, выдает "undefined"
     
  14. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Смотри лог всего элемента. Есть ли нужные тебе атрибуты.
    --- Добавлено ---
    т.е. console.log(this);
    --- Добавлено ---
    @Parallelogram, попробуй так
    Код (Javascript):
    1. $(function () {
    2.                 star = function () {
    3.                     var r = Math.random();
    4.                     var a = "<div class='active' onclick='tuc(this)' atr='" + r + "'>" + r + "</div>";
    5.                     $(".a1").after(a);
    6.                 };
    7.                 star();
    8.  
    9.                 setInterval(function () {
    10.                     star();
    11.                 }, 1000);
    12.  
    13.                 tuc = function (e) {
    14.                     var atr = $(e).attr('atr');
    15.                     console.log(atr);
    16.                 }
    17.             });
     
  15. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Спасибо. Так работает
    --- Добавлено ---
    Подскажите, что я делаю не так? Теперь я хочу вывести не один, а два блока. При клике на один, я должен добавить произвольный класс в другой. Почему-то ничего не происходит(
    Код (Javascript):
    1. $(function () {
    2.                 star = function () {
    3.                     var r = Math.random();
    4.                     var a = "<div class='active' onclick='tuc(this)' atrr1='" + r + "'>" + r + "</div>" +
    5.                             "<div class='active' style='color:#ddd;' atrr2='" + r + "'>" + r + "</div>";
    6.                     $(".a1").after(a);
    7.                 };
    8.                 star();
    9.  
    10.                 setInterval(function () { star(); }, 1000);
    11.  
    12.                 tuc = function (e) {
    13.                     var atr = $(e).attr('atrr1');
    14.                     $('div[atrr2="atr"]').addClass('asdasd');
    15.                 }
    16.             });
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    div[atrr2="atr"] - находит?
     
  17. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Простите, а как узнать находит или нет?
     
  18. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Почитай что такое отладка, посмотри инструменты разработчика google chrome, плагин firebug. Если по ним будут вопросы пиши.
     
  19. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    [​IMG]

    Задал переменную var ono = $('div[atrr2="atr"]');

    Выдает что-то. Куда смотреть?
     
  20. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Я бы дал тому div id пока идёт отладка, чтобы его запросить ono.id и точно знать что выбран нужный тег
     
  21. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    ono.id2 - выдает "undefined"
    Стало быть не находит(
     
  22. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    может предполагалось $('div[atrr2="' + atr + '"]') - конкатенация переменной
     
  23. Parallelogram

    Parallelogram Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    14
    Симпатии:
    0
    Блин, я полдня на это убил. Это же гребаная переменная. Спасибо.