JavaScript中面向对象DOM操作的混乱混乱
Confusing muckup in object-oriented DOM manipulation in JavaScript
我一直在努力解决这个问题(Javascript不是我经常使用的语言之一,我可能把代码搞砸了,所以如果它很糟糕,很抱歉!)
我正在尝试遍历一个HTML表,该表包含在Id为"JoinRequestsList"的元素中。在W3Schools的网站上(特别是这里),我可以使用get一个元素,然后用相同的方法(或类似的方法)引用它来获取子元素。无论如何,这是我的代码:
var one = document.getElementById("JoinRequestsList");
var two = one.getElementsByClassName("table");
var table = two.getElementsByTagName("tbody");
for (var i = 0, row; row = table.rows[i]; i++) {
for (var j = 0, col; col = row.cells[j]; j++) {
if(row.getElementByTagName("a") != NULL) {
console.log(row.getElementByTagName("a").title);
}
}
}
我收到的错误消息(在有问题的网页上的谷歌Chrome控制台中运行时)错误:
VM818:4未捕获类型错误:two.getElementsByTagName不是函数(…)
我能做些什么来解决这个问题?非常感谢。
getElementsByClassName
和获取getElementsByTagName
返回数组时,如果您想对数组执行任何操作,则需要提取数组的特定元素。或者只需循环遍历所有元素。
还要注意,锚元素可能在单元格中,而不是行中(除非有一些非常糟糕的HTML)。
var one = document.getElementById("JoinRequestsList");
var tables = one.getElementsByClassName("table");
var theTable = tables[0]; //assuming you have one table, or just want the first one
var tableBodies = theTable.getElementsByTagName("tbody");
var tableBody = tableBodies[0];
for (var i = 0, row; row = tableBody.rows[i]; i++) {
for (var j = 0, cell; cell = row.cells[j]; j++) {
var anchors = cell.getElementsByTagName("a");
for( var anchorIdx = 0; anchorIdx < anchors.length; anchorIdx++)
{
console.log(anchors[anchorIdx].title);
}
}
}
}
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Jquery未定义函数正在停止其他操作
- 如何操作iframe之外的元素
- javascript对象操作:根据指定条件选择属性
- jQuery:暂停按钮可以暂停所有其他操作
- 用于选择/文本框操作的JavaScript
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 通过javascript操作图像,非常简单
- 将文本框中的值用于按钮窗体操作上的变量
- 当通过AJAX调用时,控制器操作不会执行
- JavaScript中面向对象DOM操作的混乱混乱