2011-08-18 83 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

根據您的腳本塊被擊中的順序進行聲明,你可以有一些問題這裏。 document.write()創建內聯腳本有趣的問題。通常情況下,它後面的任何腳本都將無法使用doc.write的結果,直到頁面加載完成後 - 或者從另一個document.write()塊中。等待窗口完全加載可以解決您的問題。怎麼樣這樣的事情 -

一旦定義:

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

然後任何你想要寫出來的iframe:

(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() { 

不會破壞你的代碼可能,但變量應該var

+0

我不知道什麼樣的價值,我必須前設置爲url屬性回調完成。我編輯mypost – BGE

+0

在你使用getElementId之前,你仍然需要使用'document.'。所以:'document.getElementById()' – Luwe