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