普通网友 2019-01-11 13:57
浏览 49
已采纳

为什么JavaScript代码不会在内容产品wordpress中循环

in content-product.php

i have products as auction and i want show in shop page countdown timer when auction end

i write script code for countdown timer

but the script show for one product not loop for all products

<?php
    date_default_timezone_set("Europe/Oslo");
    $auctionstatus = get_post_meta( $product->get_id(), 'mp_auction_status', true );
    $clientt_tz = date("Y-m-d H:i:s");
    $auctio_time_1= $_product_meta['auction_stop_time'][0];
    if ($auctionstatus == "enabled") {
        if ($auctio_time_1 >= $clientt_tz ){
    echo  "Auction end at ";

    $js_code =<<<JS
    <script language="JavaScript">
    TargetDate = "$auctio_time_1";
    ForeColor = "#009fe3";
    CountActive = true;
    CountStepper = -1;
    LeadingZero = true;
    DisplayFormat = "%%D%% D, %%H%% T, %%M%% M, %%S%% S.";
    FinishMessage = "It is finally here!";
    </script>
    <script language="JavaScript" src="https://scripts.hashemian.com/js/countdown.js"></script>
    JS;

    echo "<br>", $js_code;

        }
        else {
            echo  "Auction end " ;

        }



    } ?>
  • 写回答

1条回答 默认 最新

  • doutinghou6980 2019-01-11 14:02
    关注

    There are two basic reasons:

    1. You are using global variables which will be shared between instances of the script
    2. The script generates an element with a hard-coded ID. An ID must be unique in a document. Each instance of the script calls getElementById and finds the first matching element.

    I'd rewrite this so the data was initialised from data-* attributes on the <script> element and it used the last script element in the document to identify where to insert the span (which it would keep a reference to instead of searching with gEBId each time).

    <p>First</p>
    <script data-number=5>
      (function() {
        const scripts = document.querySelectorAll("script");
        const script = scripts[scripts.length - 1];
        const span = document.createElement('span');
        script.parentNode.insertBefore(span, script);
        span.textContent = script.dataset.number;
        setTimeout(update, 1000);
        function update() {
            let num = parseInt(span.textContent, 10);
            num--;
            span.textContent = num;
            if (num > 0) {
                setTimeout(update, 1000);
            }
        }
      }());
    </script>
    
    
    <p>Second</p>
    <script data-number=3>
      (function() {
        const scripts = document.querySelectorAll("script");
        const script = scripts[scripts.length - 1];
        const span = document.createElement('span');
        script.parentNode.insertBefore(span, script);
        span.textContent = script.dataset.number;
        setTimeout(update, 1000);
        function update() {
            let num = parseInt(span.textContent, 10);
            num--;
            span.textContent = num;
            if (num > 0) {
                setTimeout(update, 1000);
            }
        }
      }());
    </script>

    </div>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    报告相同问题?

    悬赏问题

    • ¥15 win11安卓子系统打开谷歌登录不了切使用浏览器显示处于离线状态
    • ¥15 三维直角坐标系下,给定一个平面内四个点坐标,如何将四个点逆时针排序
    • ¥15 UnityWebRequest访问内网地址502
    • ¥20 Python语言来实现牛顿法(Newton's Method)解决非线性(系统)方程的问题。
    • ¥15 matlab控制工业相机采集图像
    • ¥25 R里做折线图和柱状图
    • ¥20 使用kokkos移植项目,遇到问题
    • ¥15 求该问题的Matlab代码
    • ¥15 python下使用pdpbox为何提示has no attribute 'pdp_isolate'?
    • ¥15 求java web病房管理系统项目,用netbeans做的