Javascript 如何修复未捕获的Typeerror:无法读取属性';innerHTML';
我想在两个日期之间搜索数据,但一次又一次地出现相同的错误我尝试了多种搜索和技术,但我被卡住了我只是不断地遇到错误这个错误,不知道怎么解决这个问题 在表格上方有一个搜索按钮,该按钮从用户处获取两个日期,并从这些日期中搜索数据,然后再次显示其按日期过滤的数据Javascript 如何修复未捕获的Typeerror:无法读取属性';innerHTML';,javascript,html,dom,Javascript,Html,Dom,我想在两个日期之间搜索数据,但一次又一次地出现相同的错误我尝试了多种搜索和技术,但我被卡住了我只是不断地遇到错误这个错误,不知道怎么解决这个问题 在表格上方有一个搜索按钮,该按钮从用户处获取两个日期,并从这些日期中搜索数据,然后再次显示其按日期过滤的数据 <button type="button" class="btn btn-info " style="font-size:17px; margin-left:548px; margin-top:-63px;" onclick="myFu
<button type="button" class="btn btn-info " style="font-size:17px; margin-left:548px; margin-top:-63px;" onclick="myFunction()">Search</button>
<table id="worksheet-list" class="table table-responsive">
<thead >
<tr class="table table-primary">
<th>
@*@Html.Label("SNo")*@
</th>
<th>
@Html.Label("Project")
</th>
<th>
@*@Html.DisplayNameFor(model => model.Hours)*@
Hours
</th>
<th>
@*@Html.DisplayNameFor(model => model.Date)*@
Date
</th>
<th>Action</th>
</tr>
</thead>
@*@foreach (var item in Model)*@
@for (int count = 0; count < 10; count++)
{
//count++;
<tr>
<td>
@count
</td>
<td>
@*@Html.DisplayFor(modelItem => item.Project.Name)*@
ASP.NET
</td>
<td>
@*@Html.DisplayFor(modelItem => item.Hours)*@
5 Hours
</td>
<td>
@*@Html.DisplayFor(modelItem => item.Date)*@
6/8/2018
</td>
<td>
<a href="#" class="btn btn-primary">Edit</a>
@*<a href="#" class="btn btn-primary">Detail</a>*@
<a href="#" class="btn btn-danger">Delete</a>
</td>
</tr>
}
</table>
<script>
function myFunction() {
var from = document.getElementById("date-from");
var to = document.getElementById("date-to");
var table = document.getElementById("worksheet-list");
var tr = table.getElementsByTagName("tr");
var td;
for (var i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[3].innerHTML;
var d1 = from.split("/");
var d2 = to.split("/");
var c = td.split("/");
var from = new Date(d1[0], parseInt(d1[1]) - 1, d1[2]);
var to = new Date(d2[0], parseInt(d2[1]) - 1, d2[2]);
var check = new Date(c[0], parseInt(c[1]) - 1, c[2]);
if (check >= from && check <= to) {
tr[i].style.display = "";
}
else {
tr[i].style.display = "none";
}
}
}
</script>
搜索
@*@Html.Label(“SNo”)*@
@Html.Label(“项目”)
@*@DisplayNameFor(model=>model.Hours)*@
小时
@*@DisplayNameFor(model=>model.Date)*@
日期
行动
@*@foreach(模型中的var项目)*@
@对于(int count=0;count<10;count++)
{
//计数++;
@计数
@*@DisplayFor(modelItem=>item.Project.Name)*@
ASP.NET
@*@DisplayFor(modelItem=>item.Hours)*@
5小时
@*@DisplayFor(modelItem=>item.Date)*@
6/8/2018
@**@
}
函数myFunction(){
var from=document.getElementById(“日期自”);
var to=document.getElementById(“日期到”);
var table=document.getElementById(“工作表列表”);
var tr=table.getElementsByTagName(“tr”);
var-td;
对于(变量i=0;i 如果(check>=from&&check使用getElementsByTagName(“tr”)
获取表行,则还将获取thead
元素中的行,该元素没有子td
元素
解决问题的最简单方法是忽略第一个表行,从1开始循环
for (var i = 1; i < tr.length; i++) {
for(变量i=1;i
如果你想的话,你可以在你的代码中加入一个意义检查
for (var i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td");
// if this row has no 3rd td then continue the loop
if (td.length < 4) continue;
td = td[3];
for(变量i=0;i
这意味着这tr[i].getElementsByTagName(“td”)[3]
是未定义的。如果不查看表#工作表列表,我们将无能为力
我现在已经给出了完整的代码