Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как разбить строку на части?! (https://javascript.ru/forum/jquery/35637-kak-razbit-stroku-na-chasti.html)

Brook 16.02.2013 22:46

как разбить строку на части?!
 
доброго вмени суток

Есть проблема у меня есть строка с данными которая обрабатывается jq
как сделать так чтобы скрипт брал дынные из по частям ....

ПРИЧИНА: строка имеет кучу значение (id), и обрабатывает из посредством DOM (создает ссылки ~ по моей проблеме их получается 586 ) по этой причине браузер дико виснет а некоторые и вообще выключаются (лиса)...

подскажите пожалуйста как это исправить (СОЗДАТЬ БОЛЬШЕ СТРОК НЕ МОГУ - МОЖНО ИСХОДИТЬ ТОЛЬКО ИЗ ЭТОЙ)

Заранее, спасибо!

вот пример строки:

<p id="link">%#K%jz0i8t69v29h##K%vr7eoawzff0d##K%yu13m6zlqwwn##K%wuu9jkc54chc##K%kokiwgo9ybff#%</p>
(здесь 5 ссылок = K%jz0i8t69v29h .... ##-граница ссылки)

Deff 16.02.2013 23:09

str = "%#K%jz0i8t69v29h##K%vr7eoawzff0d##K%yu13m6zlqwwn##K%wuu9jkc54chc##K%kokiwgo9ybff#%";
LinkArr = str.replace(/^.*%#(?=K)|#%$/g,'').split(/##/ig);
alert(LinkArr.join(',\n'))

Brook 16.02.2013 23:11

Вы не поняли - я достаю все ссылки просто создание ~600 объектов через ДОМ нагружает браузер как это исправить

Deff 16.02.2013 23:12

Brook,
LinkArr = массив = делайте по одной

Brook 16.02.2013 23:12

я думаю что надо их создавать (ссылки через ДОМ) по частям = то есть сначала 50 потом еще 50 и так далее....

danik.js 16.02.2013 23:20

<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>

Brook 16.02.2013 23:24

НЕ ВЫШЛО = лиса все равно висит

Brook 16.02.2013 23:25

у меня так:
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);

danik.js 16.02.2013 23:27

Цитата:

Сообщение от Brook
НЕ ВЫШЛО = лиса все равно висит

Да? А у меня 3ms. Это на 2.5ГГц. Стало быть ты запускаешь скрипт на компьютере с процессором в 250МГц максимум? На сеге что-ли?

Deff 16.02.2013 23:29

<!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>


Часовой пояс GMT +3, время: 06:30.