我目前收到错误消息:
未捕获的TypeError:无法设置null
的属性'innerHTML'
关于我的问题,我发现的所有信息都表明我的HTML标记的逻辑结构和顺序与我的JavaScript一起与这些类型的错误密切相关,通常是由于DOM加载事件。< / p>
虽然这些信息对于了解并帮助我解决过去遇到的几个问题很有帮助,但是对于我最近的问题,它并没有帮助我。这个错误。我得出了这个结论,因为这个错误指的是一个函数的开始,其中一个函数当前没有被调用。当函数甚至没有被执行时,怎么可能抛出这个错误?
<body onload="OnLoad();">
<div id="Wrapper">
<div id="Banner"><h1>Title</h1></div> <!-- End of Banner -->
<div id="Information">
<ul><li><a id="PageViews">Page Visits: 0</a></li>
<li id="Current_Date"><a id="CurrentDate"></a></li></ul>
</div><!-- End of Information -->
<div class="LoginForm"></div><!--End of LoginForm -->
<div id="Footer"></div><!-- End of Footer -->
以上HTML标记是我在网页中所拥有的元素的基本摘要,以下是在主体加载时调用的函数:
function OnLoad(){
PageViews();
CurrentDate();
if(navigator.cookieEnabled == false){
document.getElementById("RememberMe").style.visibility="hidden";
document.getElementById("CheckboxText").style.visibility="hidden";
var UserCookie = ReadCookie("Username");
if(UserCookie.length !== 0){
document.getElementById("Username").value = UserCookie;}}}
function PageViews(){
if(CookieCount > 0) {
document.getElementById("PageViews").innerHTML = "Page Visits: " + CookieCount}}
function CurrentDate(){
var Today = new Date();
var Day = Today.getDate();
var Month = Today.getMonth()+1;
var Year = Today.getFullYear();
if(Day<10){
Day = '0'+Day;}
if(Month<10){
Month ='0'+Month;}
var Today = Day+'/'+Month+'/'+Year;
document.getElementById("CurrentDate").innerHTML = Today;}
这是事情变得奇怪并且继续困扰我的地方,下面给出的代码是抛出错误的函数,但是如上所述,这个函数没有被调用。
function Date(){
document.getElementById("Date").innerHTML = 'Last Modified: ' + document.lastModified;}
有人可以向我解释为什么会发生这种情况,并告诉我这是错误的可能解决方案吗?
答案 0 :(得分:0)
查看代码时会出现两件事。
Javascript中的new
operator只是一种调用一个函数的方法,该函数在对象原型周围有一些特定的行为。这意味着Javascript中的构造函数只是函数。因此,当您命名函数Date
时,您会覆盖global object Date
is that is built into Javascript。这非常糟糕,不仅仅是因为您看到的行为,而且会导致您在页面上使用的其他日期处理代码无法正常工作。所以当你断言你的Date
函数没有被调用时,你错了。实际上,您通过new
运算符调用来调用它,例如new Date()
第二个也是不太重要的是一个,但是你看到该代码出错的原因是你正在寻找一个ID Date
的元素,它在你的页面上似乎不存在。