Я работаю над тем, чтобы иметь список с несколькими выборами, в котором вы можете выбрать элементы, а затем нажать кнопку «Вверх» или «Вниз», что позволит вам изменить порядок этих элементов в списке.Почему этот javascript работает так медленно в IE, когда все это делает, это изменить список выбора?
У меня есть простой автономный пример:
<html>
<head>
<title>Example</title>
<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.4.1');
</script>
</head>
<body>
<select id="selectedDataPoints" multiple="multiple">
<option>Pig</option>
<option>Duck</option>
<option>Dog</option>
<option>Zebra</option>
<option>Snake</option>
<option>Giraffe</option>
<option>Cow</option>
</select>
<input type="button" id="btnReorderUp" value="Up" />
<input type="button" id="btnReorderDown" value="Down" />
</body>
</html>
<script type="text/javascript">
var DataPointSelector = (function() {
var $selectedList = $('#selectedDataPoints');
$('#btnReorderUp').click(function(e) {
moveUp();
e.preventDefault();
});
$('#btnReorderDown').click(function(e) {
moveDown();
e.preventDefault();
});
function moveUp() {
var select = $selectedList[0];
for (var i = 1, n = select.options.length; i < n; i++)
if (select.options[i].selected && !select.options[i - 1].selected)
select.insertBefore(select.options[i], select.options[i - 1]);
}
function moveDown() {
var select = $selectedList[0];
for (var i = select.options.length - 1; i > 0; i--)
if (select.options[i].selected && !select.options[i + 1].selected)
select.insertBefore(select.options[i + 1], select.options[i]);
}
}());
</script>
Однако кнопка вверх/вниз занимает буквально 3-8 секунд, чтобы вступить в силу в IE7/8. Первый клик иногда будет быстрым, но после этого требуется, чтобы список выбора обновлялся с новыми позициями (особенно, если у вас выбрано несколько элементов).
Эта проблема отсутствует в Chrome/FF. Я бы не подумал, что это простое переупорядочение будет настолько интенсивным!
Есть ли у кого-нибудь информация, которая могла бы помочь мне ускорить функции moveUp/moveDown ?!
Я вылил этот код, и это займет столько времени. Знаете ли вы, что это ограниченные системные ресурсы или что-то еще? –
Теперь это вас шокирует, но производительность JavaScript IE медленная/бедная. – Powerlord
нижняя строка: IE медленный. Честно говоря, я оставил бы это; это создает хороший стимул для людей обновляться, если у них есть очевидные доказательства того, что их браузер отстой. (во всей серьезности, я знаю, что это, вероятно, не вариант, и вам дано рабочее решение, но в тех случаях, когда это мое мнение просто позволяет пользователям IE страдать) – Spudley