我正在尝试创建一个动态页面,根据一周中的某一天更改内容。我以为我有解决方案,但我似乎无法使其发挥作用:
<html>
<head>
<script type="text/javascript">
function showhide(id) {
var d = new Date();
var s = document.getElementById[d.getDay()];
s.style.display = (s.style.display == 'block') ? 'none' : 'block';
}
</script>
</head>
<body onload="javascript:showhide[d.getDay()]">
<div id="0" style="display:none;">
<h3>Sunday</h3>
</div>
<div id="1" style="display:none;">
<h3>Monday</h3>
</div>
<div id="2" style="display:none">
<h3>Tuesday</h3>
</div>
<div id="3" style="display:none">
<h3>Wednesday</h3>
</div>
<div id="4" style="display:none">
<h3>Thursday</h3>
</div>
<div id="5" style="display:none">
<h3>Friday</h3>
</div>
<div id="6" style="display:none">
<h3>Saturday</h3>
</div>
</body>
</html>
我怀疑这要么是一些非常简单的事情,我想太多了,要么是我还没有掌握的东西。任何为我指明正确方向的帮助将不胜感激。
到目前为止,我的来源是 w3schools、jsfiddle 和这里(我从这里的另一篇文章中借用了我的代码片段)。
预先感谢您的回复。
你的代码有两个问题。
第一个问题,你似乎混淆了[] and ()
-
[]习惯于access数组中的元素或对象中的属性
-
()习惯于invoke功能
第二个问题,你正在尝试使用d
HTML 中的变量,即使它仅在您的showhide
函数(函数内声明的变量仅在该函数及其子函数中可用)。
所以要修复您的代码,您应该:
Replace document.getElementById[d.getDay()];
with document.getElementById(d.getDay());
并在你的 HTML 中替换<body onload="javascript:showhide[d.getDay()]">
with <body onload="showhide()">
最后,根据您想要实现的目标,您应该考虑是否确实需要每天创建 DOM 元素,或者是否可以仅注入所需的数据,如下所示:
<html>
<head>
<script type="text/javascript">
function injectDay() {
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday'];
var date = new Date();
document.querySelector('.dayContainer').innerHTML = days[date.getDay()];
}
</script>
</head>
<body onload="injectDay()">
<div>
<h3 class="dayContainer"></h3>
</div>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)