试图遍历我的JavaScript书,我指的是学习该语言,并被困在遍历特定行的同级兄弟中。 W3schools和W3没有我想要的东西。以下是功能演练...
内容如下:创建countRecords()函数。此功能的目的是计算表标题之后数据表中可见行的数量。然后,总数显示在表单元格中,其ID为“ records”。将以下命令添加到函数:
一种。创建一个名为headRow的对象,该对象指向ID为“ titleRow”的表行。创建一个名为rowCount的变量,将其初始值设置为0。
b。创建一个使用家族引用的for循环,该循环从headRow的第一个兄弟姐妹开始,一直移动到下一个兄弟姐妹,直到没有兄弟姐妹为止。在for循环中。测试当前下一个兄弟节点的节点名称,直到没有剩余的分支为止。在for循环测试中,当前节点的节点名称是否等于“ TR”。如果是,请测试其显示样式的值是否等于空文本字符串。如果是(表示它在文档中可见),则将rowCount变量的值创建1。
C。将“记录”表单元格的文本更改为rowCount变量的值。不要使用innerHTML。创建一个包含rowCount变量值的文本节点,并将其分配给一个名为txt的变量。创建一个称为record的变量,以存储对元素“ records”表单元格的引用。
d。插入一个if条件,以测试“ records”单元格是否具有任何子节点。如果是这样,请用创建的文本节点(txt)替换“记录”表单元格的文本节点。如果未将文本节点附加到单元格。
var headRow; // part a
var rowCount = 0;
//部分b这是我迷路的地方。我知道我需要访问id titleRow,但不确定如何为此专门设置循环
headRow = document.getElementById("titleRow");
for(var i=0; i<headrow.length; i++)
{
if (something is not equal == "TH")
{
make code happen here
}
if (is "TR" == ""){
rowCount = +1;
}
//部分c
var txt = document.createTextNode(rowCount);
var record = document.getElementsById("records")
//部分d推迟这一部分,直到找到a,b,c。
HTML支持片段:
<table id="filters">
<tr><th colspan="2">Filter Product List</th></tr>
<tr>
<td>Records: </td>
<td id="records"></td>
</tr>
<table id="prodTable">
<tr><th colspan="8">Digital Cameras</th></tr>
<tr id="titleRow">
<th>Model</th>
<th>Manufacturer</th>
<th>Resolution</th>
<th>Zoom</th>
<th>Media</th>
<th>Video</th>
<th>Microphone</th>
</tr>
谢谢您的帮助!
最佳答案
您应该签出nextSibling
属性。我不确定您要严格遵循本书的内容,但是while
循环似乎比for
更合适:
var headRow = document.getElementById("headRow");
var rowCount = 0;
var cRow = headRow; // used as a reference to the current row
while (cRow = cRow.nextSibling) // While there is a next sibling, loop
{
if (cRow.tagName == "TR" && cRow.style.display === "")
rowCount++; // increment rowCount by 1
}
如果您坚持使用
for
循环,我想您可以执行以下操作:var headRow = document.getElementById("headRow");
var rowCount = 0;
for (var cRow = headRow.nextSibling; cRow = cRow.nextSibling;)
{
if (cRow.tagName == "TR" && cRow.style.display === "")
rowCount++; // increment rowCount by 1
}
关于javascript - 遍历特定行/设置功能的同级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2461312/