无法在一个页面上运行两次JavaScript函数(在WordPress循环内)/JavaScript函数赢得';不要跑不止一次

无法在一个页面上运行两次JavaScript函数(在WordPress循环内)/JavaScript函数赢得';不要跑不止一次,javascript,php,wordpress,loops,Javascript,Php,Wordpress,Loops,我已经在网上搜索了一段时间,试图找出我的javascript函数在一个页面上最多只能运行一次的地方。我看过很多关于JavaScript函数不止一次不能工作的帖子,我从中得到的主要信息是ID必须是唯一的,正如你可能从我的代码中可以看出的那样。然而,我仍然没有设法让它工作 基本上,我试图通过使用wordpress循环将倒计时计时器添加到页面上显示的帖子中。底部的代码在wordpress循环期间被调用 $pID是帖子的id,创建唯一的div id很好 该代码最初用于页面上显示的两个帖子中的第二个,第一

我已经在网上搜索了一段时间,试图找出我的javascript函数在一个页面上最多只能运行一次的地方。我看过很多关于JavaScript函数不止一次不能工作的帖子,我从中得到的主要信息是ID必须是唯一的,正如你可能从我的代码中可以看出的那样。然而,我仍然没有设法让它工作

基本上,我试图通过使用wordpress循环将倒计时计时器添加到页面上显示的帖子中。底部的代码在wordpress循环期间被调用

$pID是帖子的id,创建唯一的div id很好

该代码最初用于页面上显示的两个帖子中的第二个,第一个帖子没有倒计时

但是,当前的编码方式不起作用,这是因为:

function setCountDown_<?php echo $pID; ?>()
函数设置倒计时
当我将ID添加到^^^^时,并且:

setCountDown_<?php echo $pID; ?>()
设置倒计时
我这样做是因为我认为它不起作用,因为它的功能可能不是唯一的,并且在某个地方引起了问题,但显然不是这样

在循环之外,我在body标签中也有这样的内容:

<body onload="setCountDown();">

我想知道是否有人能帮我解决我需要做什么才能让这段代码正常工作,因为我觉得我遗漏了一些东西

目前代码只是从25分钟开始倒计时,现在还可以,最终它将从设定的日期开始

提前感谢您的帮助和建议

<div id="countdown-<?php echo $pID; ?>" class="featured">

<?php
    $dateFormat = "d F Y -- g:i a";
    $targetDate = time() + (25*60);//Change the 25 to however many minutes you want to countdown
    $actualDate = time();
    $secondsDiff = $targetDate - $actualDate;
    $remainingDay = floor($secondsDiff/60/60/24);
    $remainingHour = floor(($secondsDiff-($remainingDay*60*60*24))/60/60);
    $remainingMinutes = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))/60);
    $remainingSeconds = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))-($remainingMinutes*60));
    $actualDateDisplay = date($dateFormat,$actualDate);
    $targetDateDisplay = date($dateFormat,$targetDate);
?>

<script type="text/javascript">

    var days = <?php echo $remainingDay; ?>  
    var hours = <?php echo $remainingHour; ?>  
    var minutes = <?php echo $remainingMinutes; ?>  
    var seconds = <?php echo $remainingSeconds; ?> 

    function setCountDown_<?php echo $pID; ?>()
    {
        seconds--;
        if (seconds < 0)
        {
            minutes--;
            seconds = 59
        }
        if (minutes < 0)
        {
            hours--;
            minutes = 59
        }
        if (hours < 0)
        {
            days--;
            hours = 23
        }

        document.getElementById("remain-<?php echo $pID; ?>").innerHTML = days+" days, "+hours+" hours, "+minutes+" minutes, "+seconds+" seconds";

        SD<?php echo $pID; ?>=window.setTimeout( "setCountDown_<?php echo $pID; ?>()", 1000 );

        if (minutes == '00' && seconds == '00') 
        { 
            seconds = "00"; 
            window.clearTimeout(SD<?php echo $pID; ?>);

            window.alert("Time is up. Press OK to continue."); // change timeout message as required
            window.location = "http://www.readfree.ly/" // Add your redirect url
        } 
    }
</script>   

Start Time: <?php echo $actualDateDisplay; ?><br />
End Time:<?php echo $targetDateDisplay; ?><br />

<div id="remain-<?php echo $pID; ?>"> 

    <?php echo "$remainingDay days, $remainingHour hours, $remainingMinutes minutes, $remainingSeconds seconds";?>

</div>

<?php 
    echo $pID; 
?>
);
window.alert(“时间到了,按OK继续”);//根据需要更改超时消息
window.location=”http://www.readfree.ly/“//添加重定向url
} 
}
开始时间:
结束时间:

我最初的猜测是,由于不清楚您在做什么,而且根据您所说的,在同一页上会有多个脚本,您是在声明时间的全局变量,然后在函数中操作它们。范例

var a = 1;

function b(){
    a = a--; /*And other magic math */
}

function c(){
    a = a++; /*And other magic math */
}

b(); c();

/* What does a =? */

/* TRY */
function b(){
    var a = <?php echo $var; ?>  
    a = /* Do stff with a */
}
function c(){
    var a = <?php echo $var; ?>  
    a = /* Do stff with a */
}
var a=1;
函数b(){
a=a——;/*和其他神奇数学*/
}
函数c(){
a=a++;/*和其他神奇数学*/
}
b();c();
/*a=*/
/*试一试*/
函数b(){
变量a=
a=/*使用a执行stff*/
}
函数c(){
变量a=
a=/*使用a执行stff*/
}
有两个函数使用超时和我不想尝试理解的东西与相同的变量交互。考虑以某种方式确定这些时间变量的范围。我确信这对你的问题没有帮助。这样,您的时间变量将在这些函数中起作用,而不会被全部抬高


另外,要查看实际运行的是什么,请在函数启动时添加一些console.log。

在使用JS函数之前,需要先添加它的def

PHP中的语法错误

var days = <?php echo $remainingDay; ?> 
var天数=
您必须添加一个;最后

var days = <?php echo $remainingDay; ?>;
var天数=;
希望这会有所帮助,在MAMP下,在将JS代码放在上面并添加“;”之后,它似乎可以工作

问候 彼得