我想要完成的事情:
我试图将abbr的标题分别更新为".Left"和".Right"类中的值.我提出了一个jQuery解决方案,但它在加载时间方面太贵了,我试图想出一个Javascript解决方案,但我被卡住了.我是JS的新手,所以我有很多东西可以学习DOM.
我给出的HTML重复了100次(相同的骨架).如何让我的代码更高效?此外,我得到一个"无法设置null属性标题"错误.
var ratedSection = document.getElementsByClassName('RatedSection');
var ratedQuest = document.getElementsByClassName('RatedQuest');
var selector = document.getElementsByClassName('Selector');
for (var i = 0; i < ratedSection.length; i++) { //loops through ratedsection
var left = ratedSection[i].querySelector('.Left');
var right = ratedSection[i].querySelector('.Right');
left = left.innerHTML.replace(/
/g, " ");
right = right.innerHTML.replace(/
/g, " ");
for (var j = 0; j < ratedQuest.length; j++) {
for (var k = 0; k < selector.length; k++) {
var index = ratedQuest[j].querySelector('input').value;
if (index == 1)
selector[k].querySelector('abbr').title = left;
else if (index == max)
selector[k].querySelector('abbr').title = right;
}
}
}
Stuff
inside
here
More
stuff
inside
here
7
1
让我们删除一些混乱,看看循环代码:
for(var i = 0; i < ratedSection.length; i++) for(var j = 0; j < ratedQuest.length; j++) for(var k = 0; k < selector.length; k++)
我猜你想写这个(伪代码):
FOR EACH section IN PAGE FOR EACH quest INSIDE section FOR EACH selector INSIDE quest
但你实际上是这样做的:
FOR EACH section IN PAGE FOR EACH quest IN PAGE FOR EACH selector IN PAGE
循环的每次传递,你都在查看整页的任务/选择项,而不仅仅是当前部分内的那些.您将获得对任务和选择器的引用document
,而不是来自当前部分.
而不是迭代100次,你迭代10000次.querySelector
进入第一个循环时在section对象上使用