【发布时间】:2013-06-02 00:08:43
【问题描述】:
我有一个非常奇怪的行为,当我尝试获取某些 div 元素的文本时,我在链接多个 jQuery 函数时得到了所有以前的“匹配项”。
这是我的代码:
var rows = $("tr");
var groups = [];
for (var i = 0;i<rows.length;i++){
if(rows.eq(i).html().toString().match(/TV/i)){
groups += rows.eq(i).find(":first-child div").text();
}
}
console.log(groups);
现在我期望的输出只是匹配表行的第一个子项中包含的 div 中包含的文本。
我确实在控制台中得到了这个结果,但在此之前我得到了所有tr的文本,所有匹配的tr(.eq(i)),所有td(:first-child是td),所有divs 然后在输出的最后一位我得到包含在第一个 div 中的文本。
所以groups 持有所有东西,就像我会做这样的事情:
groups += rows.eq(i)
groups += rows.eq(i).find(":first-child")
groups += rows.eq(i).find("div")
groups += rows.eq(i).find("div").text();
我对 jQuery 还很陌生,只使用了标准的 JavaScript 选择器,其中 getElementById("myID").getElementsByTagName("div")[0].innerHTML 只会给我 myID 中第一个 div 的 innerHTML,没有别的。
为什么会发生这种情况,我怎样才能得到我真正想要的东西?
【问题讨论】:
-
第一:有没有可能解决你的问题?第二:如果groups是一个数组,它应该是
groups.push(value)而不是groups += value -
它在 node.js 中运行,如标签中所述,因此很遗憾不可能使用小提琴。 .push 确实如此。我之前没有将它声明为数组并留下了+=。虽然我仍然得到同样奇怪的结果。
-
不可能有node.js的HTML输出,就像浏览器中的源代码一样? (我还没用过node.js)
-
HTML 输出到底是什么意思?我现在确实用 console.log() 得到了我的输出。不过,发布该输出会相当痛苦,它有几千行。
-
我编辑了这个问题。也许现在我的问题更清楚了。