使用for而不是.each()

时间:2013-04-03 17:52:30

标签: javascript jquery loops for-loop each

我的假设是.each()函数在处理大量元素时比for循环慢。

我的问题是for循环我无法操纵元素,因为我正在循环它们。我可以用.each()做到这一点。这可能是一个简单的答案。

使用Javascript:

var element = $('#element h3');
var length = element.length;
var newHtml;

for(i=0;i<length;i++){

  newHtml = element[i].html();

  ...test newHtml
}

当我尝试获取元素的.html()时代码中断。我已经看过帖子解释这是用循环遍历元素的方法,但从中获取信息并操纵它们从未得到解决。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:6)

element[i]是一个原始DOM元素,而不是jQuery对象。 (就像this中的.each()

你想要element.eq(i),它将返回一个包装i th 元素的jQuery对象。

答案 1 :(得分:0)

如果您正在寻找一种过度优化的解决方案,可以在一段时间内处理大量h3,请忘记jquery

var element = document.getElementById('element');
var headings = element.getElementsByTagName('h3');
var length = headings.length;
var newHtml;

for(i=0;i<length;i++){

  newHtml = headings[i].innerHTML;

  ...test newHtml
}

答案 2 :(得分:0)

你正在混合使用jQuery和element[i].html();中的javascript 你的代码应该是这样的

function myfunction(){
    var element = document.getElementsByName('element');
    var length = element.length;
    var newHtml;
    for(i=0;i<length;i++){
        newHtml = element[i].innerHTML;
    }
}

请注意,document.getElementById()只返回一个结果,因此您必须将“element”放在名称attr中。坦率地说。每个人都比较容易