我在jQuery中遇到一个奇怪的问题。我正在生成带有名称行的表:
<tr name='table-row-#'><td>#</td></tr>
其中#是一个索引号(在这种情况下为1到4),表示我从数据库[PHP]中获取的行数。我什至已注释掉并删除了所有其他内容以复制上面的行。
考虑一下:
var keywords = $("[name^=table-row-]"); // Fetch all rows starting with 'table-row-'
alert(keywords.length); // alerts '4' because 4 objects were found and printed whose name start with the string 'table-row-'
alert(keywords[0].name); // alerts 'undefined', which contradicts the first line
有什么想法吗?
答案 0 :(得分:2)
只有具有name属性的表单元素才会获得相应的name属性。 tr
不是表单元素,因此它没有表单元素,但是您仍然可以获取name属性:
keywords.eq(0).attr('name')
有关属性和属性之间差异的更多信息,请参见this question。
答案 1 :(得分:0)
有人评论并删除了答案“ html元素不具有名称属性”。
这是正确的答案。我正在复制/粘贴自己的功能代码,并引用了错误的元素。
问题解决了。
答案 2 :(得分:0)
不是未定义的keywords[0]
部分,而是该条目的name
属性。
使用诸如console.log()
或any other debugging method之类的函数来查看确切定义的内容和未定义的内容。