我的假设是.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()时代码中断。我已经看过帖子解释这是用循环遍历元素的方法,但从中获取信息并操纵它们从未得到解决。
非常感谢任何帮助!
答案 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中。坦率地说。每个人都比较容易