문제

배경 정보 :
호출 할 때 양식 안에 선택 목록을 작성하고 채우는 함수가 있습니다. 그 후 스크립트는 목록의 옵션을 통해 실행되며 특정 값을 찾습니다. 값이 있으면 스크립트가 해당 옵션을 선택합니다.

문제:
목록은 동적으로 생성되고 때로는 매우 크기 때문에로드하는 데 시간이 걸립니다. 이런 일이 발생하면 스크립트의 두 번째 부분 (옵션을 선택하는 부분)은 선택 목록에로드 할 시간이 없었기 때문에 아무것도하지 않습니다.

솔루션에 대한 아이디어 :
좋은 점은 선택 목록의 Onload 이벤트에서 함수의 두 번째 부분 (별도의 함수)을 호출하는 것입니다. 그러나 선택 목록에는 onload 속성이 없어야합니다. 다른 아이디어는 단순히 지연을 추가하는 것이지만 언젠가 지연이 충분하지 않을 수 있습니다.

도움을 주셔서 감사합니다

도움이 되었습니까?

해결책 4

좋아, 나는 마침내 문제를 해결했다. 해결책은 여기에서 논의 된 것과 완전히 달랐습니다. 기본적으로 '새 옵션 (값, 텍스트)을 사용하여 목록에 옵션을 추가했습니다. 나는 IF 문을 던지고 필요한 값이 내가 필요한 것과 동일 할 때 새 옵션 (값, 텍스트, true)을 사용했습니다. 그리고 그것은 문제를 해결했습니다. 하루 종일.

다른 팁

지연을 사용하는 것은 신뢰할 수 없습니다. 선택 목록을 채우는 데 사용하는 것이 무엇이든지 함수가 완료되면 직접 호출해야합니다.

번갈아:

선택에 대한 "onload"이벤트가 없으므로 실제로 수행 할 수있는 모든 작업은 타임 아웃 후 스스로 호출되는 기능이 있습니다. 선택 목록의 항목의 길이가 0에서 변경된 경우 현재 항목을 추가하고 있음을 알 수 있습니다 (시작점). 다음 타임 아웃 후 시작점에 도달하고 아무것도 변경되지 않은 경우 항목이 목록에 추가되는 것을 중지했다고 가정 할 수 있으므로 두 번째 기능을 실행할 수 있습니다.

Ajax 전화를 어떻게하고 있습니까? 대부분의 AJAX 라이브러리는 성공적인 완료시 콜백을 수행하는 메커니즘을 제공합니다. 예를 들어 jQuery에서 :

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

Ajax 응답을 수동으로 처리하고 JavaScript로 목록을 작성하는 경우 목록이 완료된시기를 알고있는 코드가 이미 있으므로 별도의 함수가 아닌 한 번만 선택 부분을 수행 할 수 있습니다 ( Zyeming이 제안한 것처럼).

그것이 당신에게 도움이되지 않으면, 사람들이 당신에게보다 구체적인 답변을 줄 수 있도록 일부 코드를 게시하는 것이 좋습니다.

옵션을 선택하는 함수를 콜백 함수로 만들지 않겠습니까? 목록을 작성하는 함수의 끝에 호출됩니다. 예를 들어

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

참고 : 이렇게는 아닐 수도 있지만 아이디어가 있다고 생각합니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top