我有一个应用程序,我必须在其中显示事件的计时器,当事件结束时,该计时器(包含它的块)应该隐藏。我已经为父div元素(那个块)设置了CSS,因为timer元素有动态id(它有事件的id no和类名)。
这是JavaScript代码:
function GetCount(deal_year,deal_month,deal_date,deal_box)
{
dateFuture = new Date(deal_year,deal_month,deal_date,00,00,00);
// alert(dateFuture); return false;
dateNow = new Date(); //grab current date
//alert(dateNow);
span = dateFuture.getTime() - dateNow.getTime(); //calc milliseconds between dates
delete dateNow;
// if date has passed
if(span <= 0){
x=document.getElementById("dealbox");
x.parentNode.getAttributeNode("style").value="display:none";
}
else { // date is still good
// convert from milliseconds to hr/m/s...
// and save them in diff variable(code is long so avoided that)
document.getElementById(deal_box).innerHTML="<span>"+out+"
</span><br/><strong>days : hours : minutes : seconds</strong>";
setTimeout("GetCount('"+deal_year+"','"+deal_month
+"','"+deal_date+"','"+deal_box+"')", 1000);
这是php代码
if(strtotime("now") < strtotime($end_date)) { ?>
<div class ="timer_box" id="timer" style="float:right; display: block;" >
<b><div id="deal_box<?php echo $id; ?>"></div></b>
</div>
<script type="text/javascript">
GetCount(<?php echo $timer_array[0]; ?>,<?php echo $timer_array[1]-1; ?>,<?php
echo $timer_array[2]; ?>,'<?php echo 'deal_box'.$id; ?>','<?php echo 'timer'; ?>');
</script> <?php } ?>
我尝试通过使用传递到函数中的DOM元素的parentNode访问来隐藏父块。但它没有起作用。我怀疑该函数无法通过元素访问父对象的if。我什么都试过了,但无济于事。所以尝试了用javascript更改元素的类名的变通方法,但仍然认为有更好的方法,因为我不希望错过什么。
正如您的php脚本所示,您有一个后缀为"deal_box"的数字(id),但您只使用getElementById("deal_box")在javascript中访问它
我的意思是,你想念身份证吗?通常在两种情况下,你无法对给定的Dom进行样式设置:1,你根本没有通过正确的选择器获得Dom;2、您的样式设置代码中存在一些语法问题
建议您使用console.log()或其他函数来跟踪代码。