我正在尝试创建一个可变背景,其中图像会根据一天中的时间而变化。我已经使用过这段代码,但是我在某个地方做了一些事情并没有注意到功能已经崩溃了。有人可以向我解释为什么这不起作用吗?
<html>
<?php
function day()
{
if ( $hour >= 6 && $hour <= 18 )
{
return 1;
} else { return 0; }
}
?>
<style type="text/css">
body
{
background-image: url('<?php echo (day() ? 'images/day_sheep.jpg'
: 'images/night_sheep.jpg'); ?>');
background-position: 50% 50%;
background-repeat: no-repeat;
background-color: silver
}
a {text-decoration:none;}
a:link {color:#ff0000;}
a:visited {color:#0000FF;}
a:hover {text-decoration:underline;}
</style>
</html>
答案 0 :(得分:12)
在您的函数day()
中,$hour
未设置。它将在数字上下文中被视为0,如果您启用通知报告,您将看到警告您未设置变量的通知。它曾经是一个全局变量吗?您是否删除了设置其值或将其声明为全局的代码?
编辑:另外,在风格方面,我觉得有一个像这样的外部CSS文件比较简洁:
body {
background-position: 50% 50%;
background-repeat: no-repeat;
background-color: silver
}
body.day {
background-image: url('images/day_sheep.jpg');
}
body.night {
background-image: url('images/night_sheep.jpg');
}
然后你可以摆脱你的PHP脚本的CSS部分,但包括上面的CSS文件,你只需要有以下内容:
<body class="<?php echo day() ? 'day' : 'night'; ?>">
答案 1 :(得分:1)
你永远不会宣布$ hour是什么。
<html>
<?php
function day()
{
$hour = date('G');
if ( $hour >= 6 && $hour <= 18 )
{
return 1;
} else { return 0; }
}
?>
... snip ...