var validCount = 0;
var docFrag = document.createDocumentFragment();//文档碎片,减少回流和重绘
for (var i = 0; i names.length; i += 1) {
var flag1 = names[i][0].indexOf('A') !== 0;//第一位不是A的
var getFullName;
if (flag1 && names[i][0].length > 4) {
getFullName = processName(names[i]).getFullName;
var lastName = processName(names[i]).lastName;
var firstName = processName(names[i]).firstName;
var span = document.createElement('li');
var textNode = document.createTextNode(i + 1 + '. ' + getFullName());
span.appendChild(textNode);
span.index = i;
span.first = firstName;
span.last = lastName;
span.addEventListener('click', function (ev) {
console.log('click on no.' + (ev.target.index+1) + ' ' + ev.target.first + ',' + ev.target.last);
});
if (validCount + 1 > maxLength) {
break;//直接跳出循环
}
validCount += 1;
docFrag.appendChild(span);
}
}
list.appendChild(docFrag);
请教下第11题怎么写呢?
还有第12题我是这么改的代码,我觉得问题主要出在addEventListener是异步的,读的i肯定是循环完毕的i值,而不是每一次的i值,firstName和lastName也是同理。还有性能优化方面可以避免多次的回流重绘,可以使用文档碎片;以及跳出循环使用break就不要使用continue了,因为continue是只跳出这一次而break是停止整个循环。差不多我就想到这么几个。希望大家帮我多多指出不足~