2015-04-05 2 views
0

В настоящее время я получаю сообщение об ошибке:Ошибки выброшенной на функции, которые не называются

Uncaught TypeError: Cannot set property 'innerHTML' of null

Что касается моего вопроса, вся информации я нашел предлагает логическую структуру и порядок моего HTML разметка в сочетании с моим JavaScript тесно связана с такими ошибками, часто из-за событий загрузки DOM.

Хотя эта информация полезна для того, чтобы знать и помогла мне решить несколько проблем, с которыми я столкнулся в прошлом, это нисколько не помогает мне в моей последней проблеме; эта ошибка. Я пришел к такому выводу из-за того, что эта ошибка относится к началу функции, одна из которых в настоящее время не вызывается. Как эта ошибка может быть запущена, когда функция еще не выполнена?

<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

'new Date();' в основном вызывает функцию 'Date'. Вы должны взглянуть на объекты в javascript, они довольно разные, чем на других языках :) –

+0

'document.getElementById (« Date »)' ... okay, так что где элемент с 'id =" Date ", который вы Вы ищете этот код? Я вижу один с «id =« Current_Date »и один с« id = »CurrentDate» (плохая идея, btw, дающая им подобные имена), но не с идентификатором 'id =" Date ". –

+0

Нет элемента с идентификатором * Дата *. Есть * CurrentDate * и * Current_Date *, возможно, вы имели в виду один из них. Вероятно, функция * currentDate * вызывает * Date *, а так как вы уничтожили встроенный конструктор Date, объявив свою собственную функцию * Date * ... остальное должно быть очевидно. – RobG

ответ

0

Две вещи выскакивают при взгляде на ваш код.

new operator в Javascript - это просто способ вызова функции, которая имеет определенные особенности поведения вокруг прототипов объектов. Подразумевается, что конструкторы в Javascript - это просто функции. Поэтому, когда вы назвали функцию Date, вы перепробовали global object Date is that is built into Javascript. Это действительно плохо не только из-за поведения, которое вы видите, но и приведет к тому, что другой код обработки даты, который у вас есть на странице, не работает. Поэтому, когда вы утверждаете, что функция Date не вызывается, вы ошибаетесь. Фактически, вы вызываете его с помощью вызова с помощью оператора new, например. new Date()

Второй и менее важный - один, но причина, по которой вы видите ошибку в этом коде, заключается в том, что вы ищете элемент с идентификатором Date, который, как представляется, не существует на вашей странице.