Javascript:скрипту необходимо дождаться загрузки элемента

StackOverflow https://stackoverflow.com/questions/1004648

Вопрос

Справочная информация:
У меня есть функция, которая при вызове создает список выбора внутри формы и заполняет его.После этого скрипт пробегается по параметрам в списке и ищет определенное значение.Если значение есть, скрипт "выбирает" этот параметр.

Проблема:
Поскольку список создается динамически и в некоторых случаях очень велик, загрузка занимает некоторое время.Когда это происходит, вторая часть скрипта (та часть, которая выбирает опцию), ничего не делает, потому что список выбора не успел загрузиться.

Идея для решения:
Что было бы неплохо, так это вызвать вторую часть функции (как отдельную функцию) в событии onload для списка выбора.Но списки выбора не должны иметь атрибута onload.Другая идея состоит в том, чтобы просто добавить задержку, но однажды задержка может оказаться недостаточно продолжительной.

Заранее спасибо за любую помощь

Это было полезно?

Решение 4

Хорошо, я наконец исправил проблему. Решение было совершенно другим, чем то, что обсуждалось здесь. По сути, я использовал «новый параметр (значение, текст)», чтобы добавить параметры в свой список. Я закончил тем, что добавил оператор if, и когда значение, равное тому, что мне было нужно, используется новый Option (value, text, true). и это решило проблему. Все за день работы.

Другие советы

Использование задержки ненадежно.Что бы вы ни использовали для заполнения списка выбора, оно должно вызывать функцию непосредственно по завершении.

поочередно:

Поскольку для select all нет события "onload", вы действительно можете это сделать, у него есть функция, которая вызывает себя после истечения времени ожидания.Если длина элементов в списке выбора изменилась с нуля, вы знаете, что в данный момент что-то добавляет элементы (начальная точка).Если начальная точка достигнута и после следующего тайм-аута ничего не изменилось, вы можете предположить, что элементы перестали добавляться в список, поэтому вы можете запустить вторую функцию.

Как дела с AJAX? Большинство библиотек AJAX предоставляют механизм обратного вызова при успешном завершении. Например, в jQuery:

$("#myList").load("ajax.url", function(){
   //your content has been loaded, so you can do your selection logic here
});

Если вы обрабатываете ответ ajax вручную & amp; Если вы строите свой список в javascript, то у вас уже есть код, который знает, когда список закончен, так что вы можете просто выполнить выделение после завершения, а не как отдельную функцию (как предложено zyeming).

Если это не поможет, возможно, стоит опубликовать некоторый код, чтобы люди могли дать вам более конкретный ответ.

Почему бы вам не сделать функцию, которая выбирает option, функцией обратного вызова. Это будет вызов в конце функции, которая создает список. Например.

function createList(onComplete) {
// Create the list and maybe other tasks
onComplete();
}

Примечание: возможно, это не так, но я думаю, у вас есть идея ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top