Как передать id в jQuery onshow, onload - PullRequest
0 голосов
/ 12 февраля 2020

Я использую функцию JavaScript для установки таймера обратного отсчета на основе идентификатора. Мне нужно динамически передавать идентификатор в jQuery при открытии div (у меня есть несколько таймеров для разных div и разных идентификаторов (timespan, timespan1, timespan2 ...) и я изменил JS на jQuery, чтобы сделать это. Когда я специально называю идентификатор, таймер работает нормально, но мне не удается автоматически передать идентификатор на jQuery. Это функция JS Я использую, и он работает с id = timespan:

<script>
        var CCOUNT = 10;
        var t, count;

        function cddisplay() {
            // displays time in span
            document.getElementById('timespan').innerHTML = count;
        };

        function countdown() {
            // starts countdown
            cddisplay();
            if (count == 0) {
                // time is up
            } else {
                count--;
                t = setTimeout("countdown()", 1000);
            }
        };

        function cdpause() {
            // pauses countdown
            clearTimeout(t);
        };

        function cdreset() {
            // resets countdown
            cdpause();
            count = CCOUNT;
            cddisplay();
        };
    </script>

Вот как я изменил его на jQuery, чтобы передать указанный c id в функцию, и он не работает

<script>
        var CCOUNT = 10;
        var t, count;

        function cddisplay(id) {
            // displays time in span
            $(document.getElementById('#' + id)).innerHTML = count;
        };

        function countdown() {
            // starts countdown
            cddisplay();
            if (count == 0) {
                // time is up
            } else {
                count--;
                t = setTimeout("countdown()", 1000);
            }
        };

        function cdpause() {
            // pauses countdown
            clearTimeout(t);
        };

        function cdreset() {
            // resets countdown
            cdpause();
            count = CCOUNT;
            cddisplay();
        };
    </script>

А это HTML

<div class="flex relative auto-id" onclick="TradeThis4(this.id); cdreset(this.id)" style="width: 100%; display: none;">
  <div class="relative flex-1">
     <div class="px-3 text-xs text-center text-white border border-red-700">
        <div class="text-xxs">
                                                I SELL <span class="curr-">EUR</span> <span class="qty1">10000</span> • I BUY <span class="curr-RSD">RSD</span> <span class="qty2">1000000</span>
        </div>
        <div id="container" style="width:100%; height:31px; margin:0 ;">
          <div style="float:left; display: inline-block; margin:0 auto; width:50%; cursor: pointer;">
                                                    1.10<span class="text-3xl font-bold leading-none">28</span>3
          </div>
        <div class="text-2xl timer" onload="cddisplay(this.id)" id="timespan" style="float:right; width:50%; pointer-events:none">
                                                    10
        </div>
     </div>
     <div class="text-xxs">
                                                CLICK ON PRICE TO CONFIRM SELL
     </div>
   </div>
 </div>
</div>

У кого-нибудь есть предложения, почему я не могу передать тайм-аут id в jQuery и запустить таймер загрузки или запуска ...?

1 Ответ

0 голосов
/ 12 февраля 2020
  1. Обратите внимание, что ваш родительский div имеет стиль display:none;
  2. $(document.getElementById('#' + id)).innerHTML = count; Неправильный синтаксис в jQuery

Правильный синтаксис для изменения html из селектора идентификаторов в jQuery is:

$("#"+id).html(count);

Вы не должны писать имя функции в строке. Напишите имя функции как:

t = setTimeout(countdown, 1000);
...