Николай Веселуха
Высший разум
(366094)
6 лет назад
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Таблица</title>
<style>
table, td {
width: 300px;
border: 1px solid darkgray;
border-collapse: collapse;
}
td {
text-align: right;
height: 18px;
}
</style>
</head>
<body>
<table>
<caption>Редактируемая таблица</caption>
<tr>
<td contenteditable="true">1</td>
<td contenteditable="true">2</td>
<td contenteditable="true">3</td>
</tr>
<tr>
<td contenteditable="true">1</td>
<td contenteditable="true">2</td>
<td contenteditable="true">3</td>
</tr>
</table>
</body>
</html>
Голова Робота
Просветленный
(36354)
6 лет назад
Надо разобраться, почему так долго выполняется. Наверняка можно оптимизировать. Сколько input-ов? 1000?
Настоящей многопоточности в JS нет, есть её имитация. Да, можно применить. Это улучшит отзывчивость страницы, но не знаю, решит ли проблему полностью.
Ксения ДанченкоМастер (2239)
6 лет назад
В том то и дело что да, в среднем 1000-2000. Оптимизировать нечего, там всего пара действий. Нужен другой подход
Сергей Жаков
Мудрец
(16209)
6 лет назад
есть нестандартный способ увеличить скорость обработки
сначала скрыть все input ы style=' display:none;'
после полной обработки всего массива обьектов
установи или удали им css стиль display:none
установить аттрибут style
obj.setAttribute( 'style' , 'display:none; ' )
попробуй этот вариант
/* оптимизировано */
function update(){
var i, sz = inputs.length;
var obj;
for ( i=0; i < sz; i++ ){
obj = inputs[ i ];
obj.setAttribute( 'style', 'display:none;' );
replace( obj );
}
return 0;
}
function update() { //long function
var inputs = getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
replace(inputs[i]);
}
}
function replace(var) {
//logic
}
Проблема в том что пока выполняется эта функция страница не отвечает. Клиент не может выделить текст на странице, нажать другие кнопки, подсветить сслылки и прочее. Можно максимум двигать страницу вверх вниз (колесиком). Можно ли как-то сделать, чтобы это все выполнялось в фоновом режиме типа, и не блочило страницу ?