2011-10-29 51 views
0

我有我的網站下面的代碼: -的JavaScript,innerHTML的不被認可的JavaScript

function HCreateWindow(top,left,width,height,zindex,parent) { 
var handle = Math.floor(Math.random()*10000000000); 

if(parent==null) { 
document.write("<div id=\"HWINDOW" + handle + "\"style=\"top: " + top + "px; left: " + left + "px;width: " + width + "px;height: " + height + "px; border: 1px solid black;z-index: " +zindex +"\" class=\"drag\"></div>"); 
} else { 
    document.getElementById("HWINDOW" + parent).innerHTML += "<div id=\"HWINDOW" + handle + "\"style=\"top: " + top + "px; left: " + left + "px;width: " + width + "px;height: " + height + "px; border: 1px solid black;z-index: " +zindex +"\" class=\"drag\"></div>"; 
} 
return handle; 
} 

事實證明的innerHTML導致Internet Explorer 8中說的innerHTML爲空或不是一個對象。認爲這可能是一個IE瀏覽器的錯誤,我更新到IE9。仍然有同樣的問題。但是,如果我之前「如果」添加一行: -

document.write(parent); 

它的作品,彷彿innerHTML的認識。不知道這兩個命令是如何相關的。唯一的是我不想顯示'父'的內容,因爲這會使網頁不整潔。任何線索?

+3

當DOM準備就緒時是否正在執行代碼? – Usman

+0

「父」的價值是什麼? – Andreas

+1

不要使用'.innerHTML' – Raynos

回答

1

假設你內嵌調用它,當您文件撰寫,後父存在(一個變量可憐的名字),它應該工作

function HCreateWindow(top,left,width,height,zindex,parentIdent) { 
    var handle = Math.floor(Math.random()*10000000000); 
    var html = '<div id="HWINDOW' + handle + '"style="top:' + top + 'px; left:' + left + 'px;width:' + width + 'px;height:' + height + 'px; border:1px solid black;z-index:' +zindex +'" class="drag"></div>'; 
    if (parentIdent==null) { 
    document.write(html); 
    } 
else { 
    document.getElementById("HWINDOW" + parentIdent).innerHTML = html; 
    } 
    return handle; 
} 

所以無論

<script> 
var hnd = HCreateWindow(10,100,200,400,1000); 
</script> 

OR

<div id="HWINDOWxxx"></div> 

<script> 
var hnd = HCreateWindow(10,100,200,400,1000."xxx"); 
</script>