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是停止整个循环。差不多我就想到这么几个。希望大家帮我多多指出不足~
点赞 评论

相关推荐

点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务