我想在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中不起作用。我找不到这个元素。
我的问题是:
页面上有很多元素,因为每个元素必须只设置这个元素参数
我不知道哪个元素是父元素,我不知道脚本元素ID。我需要在第一个脚本名为
在任何回调之前执行的代码的第一部分,我想让它保持异步
答案 0 :(得分:1)
根据您的脚本块命中的顺序,您可能会遇到许多问题。 document.write()
使用内联脚本创建了有趣的问题。通常,在页面完成加载之后,或者在另一个document.write()
块内,之后的任何脚本将无法使用doc.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;
})();
答案 1 :(得分:0)
首先,使用:
document.getElementById(uniqid).url = 'http://google.com';
该方法是文档对象的一部分,因此您只能通过预先document
来使用它。
其次,使用:
var callback = function() {
可能不会破坏您的代码,但应使用var