2011-08-18 2 views
0

javascript 함수가 실행되는 위치에 요소를 만들고 싶습니다.장소에 요소 생성

<script> 
var uniqid='an unique Id'; 
document.write('<iframe id='+uniqid+'></iframe>'); 
someAsyncFunction(callback) 
</script> 

코드의 다른 부분에서 나는이 요소

<script> 
callback=function(paramfromcallback){ 
    getElementById(uniqid).url=paramfromcallback; 
} 
</script> 

에 대한 추가 매개 변수를 설정하지만이 IE에서 작동하지 않습니다. 이 요소를 찾을 수 없습니다.

내 문제는 각 요소가 설정해야합니다 위해

  1. 페이지에있는 많은 요소는이 요소는 내가 부모 인 요소 모르는

  2. , 내가 모르는 매개 변수가 있습니다 스크립트 요소 ID. 내가 다시 어떤 호출하기 전에 실행되는 코드의

  3. 첫 번째 부분이라는 첫 번째 스크립트입니다 장소의 요소를 삽입해야하고, 나는 그것이

답변

1

var이 스크립트 블록이 명중 된 순서에 따라 선언해야합니다, 당신은 문제의 번호를 가질 수있다 이리. document.write() 인라인 스크립트에 흥미로운 문제가 발생합니다. 대개의 경우 스크립트가 끝날 때까지 또는 다른 document.write() 블록 내에서 doc.write 결과를 사용할 수 없게됩니다. 창이 완전히로드 될 때까지 기다리면 문제가 해결 될 수 있습니다. 어떻게 이런 일에 대해 -

일단 정의 :

function callback(id) { 
    var el = document.getElementById(id); 
    if (el !== null) { 
    el.url = 'http://google.com'; 
    } 
} 

을 그리고 어디에서든지 당신은 iframe을 쓰는하려는 : 내가 전에 url 속성으로 설정해야하는지 값

(function(){ 
    var id = 'an_unique_Id'; 
    document.write('<iframe id='+id+'></iframe>'); 

    var l = window.onload; 
    var n = function() { someAsyncFunction(function() { callback(id); }); }; 

    window.onload = (typeof l == 'function') ? function() { l(); n(); } : n; 
})(); 
+0

문서로드를 기다리고 있습니다. – BGE

0

첫째, 사용에서 비동기 유지하려면 :

document.getElementById(uniqid).url = 'http://google.com'; 

메서드는 문서 개체의 일부이므로 앞에 document을 붙이면 사용할 수 있습니다.

둘째, 사용 :

var callback = function() { 

아마 코드 침입하지 않습니다,하지만 변수는

+0

모르겠다을 콜백이 완료되었습니다. mypost를 편집합니다 – BGE

+0

getElementId가 작동하기 전에 여전히'document.'를 사용해야합니다. 그래서 :'document.getElementById()' – Luwe

관련 문제