как разбить строку на части?!
доброго вмени суток
Есть проблема у меня есть строка с данными которая обрабатывается jq как сделать так чтобы скрипт брал дынные из по частям .... ПРИЧИНА: строка имеет кучу значение (id), и обрабатывает из посредством DOM (создает ссылки ~ по моей проблеме их получается 586 ) по этой причине браузер дико виснет а некоторые и вообще выключаются (лиса)... подскажите пожалуйста как это исправить (СОЗДАТЬ БОЛЬШЕ СТРОК НЕ МОГУ - МОЖНО ИСХОДИТЬ ТОЛЬКО ИЗ ЭТОЙ) Заранее, спасибо! вот пример строки: <p id="link">%#K%jz0i8t69v29h##K%vr7eoawzff0d##K%yu13m6zlqwwn##K%wuu9jkc54chc##K%kokiwgo9ybff#%</p>(здесь 5 ссылок = K%jz0i8t69v29h .... ##-граница ссылки) |
str = "%#K%jz0i8t69v29h##K%vr7eoawzff0d##K%yu13m6zlqwwn##K%wuu9jkc54chc##K%kokiwgo9ybff#%"; LinkArr = str.replace(/^.*%#(?=K)|#%$/g,'').split(/##/ig); alert(LinkArr.join(',\n')) |
Вы не поняли - я достаю все ссылки просто создание ~600 объектов через ДОМ нагружает браузер как это исправить
|
Brook,
LinkArr = массив = делайте по одной |
я думаю что надо их создавать (ссылки через ДОМ) по частям = то есть сначала 50 потом еще 50 и так далее....
|
<body> <script>var tstart = new Date(); var string = ''; for (var i = 0; i < 600; i++) { string += '<a href="javascript.ru">JavaScript.Ru</a><br>'; } document.body.innerHTML += string; alert(new Date() - tstart + 'ms'); </script> </body> <body> <script>var tstart = new Date(); var links, link; links = document.createDocumentFragment(); for (var i = 0; i < 600; i++) { link = document.createElement('a'); link.href = 'javascript.ru'; link.textContent = 'JavaScript.Ru'; links.appendChild(link); links.appendChild(document.createElement('br')); } document.body.appendChild(links); alert(new Date() - tstart + 'ms'); </script> </body> |
НЕ ВЫШЛО = лиса все равно висит
|
у меня так:
var reg = /#([\s*?\S*?]*?)#/gm; do {mtd = reg.exec(text); if(mtd){$('#voiseV').html($('#voiseV').html()+'<span class="strl" type="R%" traffick="'+trf+rtrf+'" onclick="startplayer(\''+mtd[1]+'\')">Ссылка №</span>');$('#link').remove()}} while(mtd); |
Цитата:
|
<!DOCTYPE html> <body> <script> str = "%#K%jz0i8t69v29h##K%vr7eoawzff0d##K%yu13m6zlqwwn##K%wuu9jkc54chc##K%kokiwgo9ybff#%"; LinkArr = str.replace(/^.*%#(?=K)|#%$/g,'').split(/##/ig); //alert(LinkArr.join(',\n')); function run() { var tstart = new Date(); var L = LinkArr.length; var str = ''; for(var i =0; i<500; i++) { str+='<a href="'+LinkArr[0]+'">Текст</a><br />\n' }//alert(str) var p=document.createElement('p'); p.innerHTML=str; document.body.appendChild(p); alert(new Date() - tstart); } </script> <button onclick="run()">Запуск</button> </body> |
1) избавиться от регулярки. По крайней мере от циклического ее запуска
2) Изменять innerHTML только после окончания цикла. 3) Отформатировать код, чтобы был читабельный, а то глаза чуть не сломал. |
сейчас попробую
|
УРААА !!
избавиться от регулярки. - НЕ ЗНАЮ НАСКОЛЬКО ПРАВИЛЬНО ВАС ПОНЯЛ НО = у меня была перезапись поэтому все висло ($('#voiseV').html($('#voiseV').html()+...) теперь все работает как часы) - спасибо большое |
Часовой пояс GMT +3, время: 13:25. |