jQuery本身矛盾

时间:2018-09-18 02:05:48

标签: javascript jquery

我在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

有什么想法吗?

3 个答案:

答案 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之类的函数来查看确切定义的内容和未定义的内容。