有一些javascript代码的问题,当我尝试将一个php字符串传递给它时,它是一个用于计数的日期计时器,并且如果我给出静态值它正在工作但是如果我有一个php字符串,它只给出零。
<?php $r="June 7, 2087 15:03:25"; ?>
<script type="text/javascript">
$(function() {
var endDate = "<?php echo $r;?>";
$('.countdown.simple').countdown({ date: endDate });
});
</script>
你可以在这里检查代码:http://jsbin.com/EboVeCO/1/edit,如果你评论$r
并将日期准确地放在JS中,它会起作用,否则就不起作用了(/ p>
什么事?为什么不工作?
更新:
<?php foreach ($row as $r){
$rr = $r->release_date;
$rrr = date("F d, Y H:i:s", strtotime($rr));
<script type="text/javascript">
$(function() {
var endDate = "<? echo $rrr; ?>";
$('.countdown.simple').countdown({ date: endDate });
});
</script>
echo ' <div class="countdown simple"></div>';
}
这个$row
来自:
public function get_things() {
$q = $this->db->query("SELECT * from s_data");
if($q->num_rows() > 0){
foreach($q->result() as $row){
$data[] = $row;
}
return $data;
}
}
萨吕!
答案 0 :(得分:2)
您的代码在第4行有一个语法错误,意外的';'。echo
需要它可以打印的东西,它本身就是非法的。
答案 1 :(得分:1)
我认为您的<?php echo ;?>
没有回应任何内容,因此endDate
只是一个空字符串,可能会导致countdown()
出现问题。
如果您只是将endDate更改为有效日期,则可以正常工作。
var endDate = "June 7, 2087 15:03:25";
所以,问题在于你的echo
。我试试这个:
<?php echo $r;?>
答案 2 :(得分:0)
在写js之前你没有退出php。此外,您需要在<?
部分声明php,或者它可能被解释为其他内容,如xml。它应该更接近这个:
<?php $i = 0; foreach ($row as $r){
$rrr = date("F d, Y H:i:s", strtotime($r->release_date));
// try print_r($rrr) here to see if your date is actually a valid string
?>
<script type="text/javascript">
$(function() {
var endDate = "<?php echo $rrr; ?>";
$('#counter<?php echo $i; ?>').countdown({ date: endDate });
});
</script>
<div id="counter<?php echo $i; ?>" class="countdown simple"></div>
<?php
$i ++; }
?>
虽然在正确编写的示例中,js可能不会在循环中写入。您可以在单独的文件中处理js,并且日期可以设置为倒计时简单元素中的数据属性。
此外,如果没有结果,您的提取功能不会返回任何内容。因此,您可能希望将整个块放在一个条件中,只有在填充$ row时才会触发。
编辑:
尝试重组这个......
<?php foreach ($row as $r){
$rrr = date("F d, Y H:i:s", strtotime($r->release_date));
?>
<div class="countdown simple" data-date="<?php echo $rrr; ?>"></div>
<?php
}
?>
<script type="text/javascript">
$(function() {
$('.countdown.simple').each(function(){
var endDate = this.data('date');
this.countdown({date: endDate});
});
});
</script>