Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带JavaScript的倒计时计时器在smarty中不起作用_Javascript_Smarty - Fatal编程技术网

带JavaScript的倒计时计时器在smarty中不起作用

带JavaScript的倒计时计时器在smarty中不起作用,javascript,smarty,Javascript,Smarty,嗨,伙计们,我用Smarty()和JavaScript制作了一个带有倒计时的表,看起来一切都正常,但我不知道为什么我的倒计时只有一行结果 如果可能的话,看看我的代码,告诉我我能做什么。谢谢所有的程序员。祝你今天愉快 HTML: <table class="table table-striped table-hover" id="datatable3" cellspacing="0" width="100%"> <thead> <tr>

嗨,伙计们,我用Smarty()和JavaScript制作了一个带有倒计时的表,看起来一切都正常,但我不知道为什么我的倒计时只有一行结果 如果可能的话,看看我的代码,告诉我我能做什么。谢谢所有的程序员。祝你今天愉快

HTML:

<table class="table table-striped table-hover" id="datatable3" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th></th>
            <th>Avatar</th>
            <th>Player Name</th>
            <th>Game</th>
            <th>SS Shots</th>
            <th>BanTime Remaining</th>
            <th>Ban Reason</th>
        </tr>
    </thead>
    <tbody class="tb1">
    {foreach $bans as $ban}
        <tr class="tr1">
            <td class="count"></td>
            <td>{$ban.avatar}</td>
            <td>{$ban.name}</td>
            <td>{$ban.game}</td>
            <td>{$ban.ss}</td>
            <td>{include file="time.tpl"}</td>
            <td>{$ban.reason}</td>
        </tr>
    {/foreach}
    </tbody>
</table>

阿凡达
球员姓名
游戏
党卫军射击
剩余时间
禁令理由
{foreach$bans作为$ban}
{$ban.avatar}
{$ban.name}
{$ban.game}
{$ban.ss}
{include file=“time.tpl”}
{$ban.reason}
{/foreach}
time.tpl:

<script type="text/javascript" language="javascript">
var now = new Date();
var event = new Date("{$ban.bantime}"*1000);
var milleseconds = (event - now) / 10;
var seconds = milleseconds / 100;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
var month = days / 30;
var years = days / 365.25;
ID=window.setTimeout("update();", 1);

function update() {
now = new Date();
seconds = (event - now) / 1000;
seconds = Math.floor(seconds);
minutes = seconds / 60;
minutes = Math.floor(minutes);
hours = minutes / 60;
hours = Math.floor(hours);
days = hours / 24;
days = Math.floor(days);
month = month / 30;
month = Math.floor(month);
years = days / 365.25;
years = Math.floor(years);

seconds = seconds - minutes*60;
if (seconds < 10) { seconds = "0" + seconds.toString(); }
minutes = minutes - hours*60;
if (minutes < 10) { minutes = "0" + minutes.toString(); }
hours = hours - days*24;
days = days - Math.floor(years*365.25);

document.getElementById("years").innerHTML = years;
document.getElementById("month").innerHTML = month;
document.getElementById("days").innerHTML = days;
document.getElementById("hours").innerHTML = hours;
document.getElementById("minutes").innerHTML = minutes;
document.getElementById("seconds").innerHTML = seconds;
ID=window.setTimeout("update();",500);
}
</script>
<table cellspacing="0" cellpadding="0" border="0" >
<tbody class="{$ban.userID}">
    <tr>
        <td><span id="years"></span></td>
        <td><span id="month"></span></td> 
        <td><span id="days"></span></td> 
        <td><span id="hours"></span></td>
        <td><span id="minutes"></span></td>
        <td><span id="seconds"></span></td>
    </tr>
    <tr>
        <td><span>years</span></td>
        <td><span>month</span></td> 
        <td><span>days</span></td> 
        <td><span>hours</span></td>
        <td><span>min</span></td>
        <td><span>sec</span></td>
    </tr>
</tbody>
</table>

var now=新日期();
var事件=新日期(“{$ban.bantime}”*1000);
var milleseconds=(事件-现在)/10;
var秒=千秒/100;
var分钟=秒/60;
var小时=分钟/60;
var天数=小时/24;
var月=天/30;
var年=天/365.25;
ID=window.setTimeout(“update();”,1);
函数更新(){
现在=新日期();
秒=(事件-现在)/1000;
秒=数学地板(秒);
分=秒/60;
分钟=数学地板(分钟);
小时=分钟/60;
小时=数学楼层(小时);
天=小时/24;
天=数学地板(天);
月=月/30;
月=数学楼层(月);
年=天/365.25;
年=数学地板(年);
秒=秒-分钟*60;
如果(秒<10){seconds=“0”+seconds.toString();}
分钟=分钟-小时*60;
如果(分钟<10){minutes=“0”+minutes.toString();}
小时=小时-天*24;
天=天-数学下限(年*365.25);
document.getElementById(“年”).innerHTML=年;
document.getElementById(“月”).innerHTML=month;
document.getElementById(“天”).innerHTML=天;
document.getElementById(“小时”).innerHTML=hours;
document.getElementById(“分钟”).innerHTML=minutes;
document.getElementById(“秒”).innerHTML=seconds;
ID=window.setTimeout(“update();”,500);
}
年
月
天
小时
闵
秒
但是我的代码只有一行结果,为什么?
请参阅。

您的问题是
setTimeout
将函数指针作为参数,而不是函数名字符串

因此,试试这个:
ID=setTimeout(更新,500)

有关更多信息,请查看。他们也有一个例子

document.getElementById(“年”)
返回id为年的元素

在你的例子中,我只能看到一个id为years的元素

如果要更改一组元素,可能需要给它们一个类名,然后对所有元素执行操作

例如:

// If you keep *multiple rows* something like this (not sure about your table structure)
<tbody class="{$ban.userID}">
    <tr>
        <td><span class="years"></span></td>
        ...
    </tr>
    <tr>
        <td><span>years</span></td>
        ...
    </tr>

    <tr>
        <td><span class="years"></span></td>
        ...
    </tr>
    <tr>
        <td><span>years</span></td>
        ...
    </tr>

</tbody>
</table>


/** This would do the trick **/
document.getElementsByClassName("years").innerHTML = years;
// ...
//如果您保留*多行*类似的内容(不确定您的表结构)
...
年
...
...
年
...
/**这样就行了**/
document.getElementsByClassName(“年”).innerHTML=年;
// ...

`

lol不适用于旧的,至少我有一行结果,现在没有结果