Javascript-无法读取未定义的属性“innerHTML”
为什么我得到:未捕获的TypeError:无法读取未定义的属性“innerHTML”? 我想从一个任务中得到日期、月份和年份,这样我就可以计算出任务还剩多少天,但是我得到了这个错误Javascript-无法读取未定义的属性“innerHTML”,javascript,jquery,Javascript,Jquery,为什么我得到:未捕获的TypeError:无法读取未定义的属性“innerHTML”? 我想从一个任务中得到日期、月份和年份,这样我就可以计算出任务还剩多少天,但是我得到了这个错误 <div class="task" id="task"> <ul> <li class="title" id="@ta.Id"><div class="complete"></div>@
<div class="task" id="task">
<ul>
<li class="title" id="@ta.Id"><div class="complete"></div>@ta.Title</li>
<li class="body"><b>Project: </b>@ta.Description</li>
<li>Hand In: @ta.Dia/@ta.Mes/@ta.Año</li>
<li class="leftion">Days left: </li>
<li class="day" style="display: none">@ta.Day</li>
<li class="month" style="display: none">@ta.Month</li>
<li class="year" style="display: none">@ta.Year</li>
</ul>
</div>
<script language="javascript" type="text/javascript">
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
var firstDate = new Date(yyyy, mm, dd);
var gio = document.getElementsByClassName("task");
var lele = document.getElementsByClassName("leftion");
for (var i = 0; i <= gio.length; i++) {
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var day= document.getElementsByClassName("day")[i].innerHTML;
未捕获的TypeError:无法读取未定义的属性“innerHTML”
当使用var i=0的循环时;我您的html中的.task节点可能比.day节点多
如果只在当前任务节点中的节点中查找当天,您将有更多机会发现错误并避免许多奇怪的行为。任务节点:
请参见gio[i].getElementsByClassName的使用,而不是document.getElementsByClassName该错误消息仅表示您试图访问未定义值的属性innerHTML。第一步是查看所有使用.innerHTML的地方,并确定哪些地方可能导致未定义。我指出了整个代码的问题所在。正是信息上方的这一行将代码i
var month = document.getElementsByClassName("month")[i].innerHTML;
var year= document.getElementsByClassName("year")[i].innerHTML;
var secondDate = new Date(year, month, day);
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime()) / (oneDay)));
lele[i].innerHTML = diffDays;
}
</script>
var gio = document.getElementsByClassName("task");
//...
for (var i = 0; i <= gio.length; i++) {
//...
var taskNode = gio[i];
var day = taskNode.getElementsByClassName("day")[0].innerHTML;