2012-04-28 99 views
0

我有下面的JavaScript代碼應該能夠創建一個由HTML文件中的onclick事件觸發的對話框。 但奇怪的是我總是得到錯誤Uncaught TypeError: Cannot read property 'style' of null。順便說一下TypeError涉及到重新執行程序(元素)的功能!我已經檢查過這個元素是否真的是空的,但是把它放在alert中給我看了通常的元素名稱。我知道代碼看起來有點粗糙,但我對任何建議都是免費的。這裏是jsfiddle code.我對javascript很新,所以如果你能夠自己完全調整代碼,我會很高興。重新打開程序函數返回類型錯誤「無法讀取屬性'樣式'null」

請幫幫我!

function executeprogram(element) { 

var program = document.createElement("div"); 
var toolbar = document.createElement("div"); 
var title = document.createElement("div"); 
var minimize = document.createElement("div"); 
var close = document.createElement("div"); 
var iframe = document.createElement("iframe"); 
var container = document.getElementById("container"); 

// Create program Div // 
program.id = element; 
program.className = "dialog"; 
program.width = iframe.width; 
add(element); 
program.setAttribute("onmousedown", "dragstart(this)"); 
container.appendChild(program); 

// Toolbar // 

toolbar.id = "toolbar"; 
toolbar.width = iframe.width; 
program.appendChild(toolbar); 

// Title // 

title.id = "title"; 
title.innerHTML = element; 
toolbar.appendChild(title); 

// Minimize // 

minimize.id = "minimize"; 
minimize.innerHTML = "-"; 
minimize.onclick = minimizeprogram(element); 
toolbar.appendChild(minimize); 

// Close // 

close.id = "close"; 
close.innerHTML = "x"; 
close.onclick = closeprogram(element); 
toolbar.appendChild(close); 

// Create Iframe // 
iframe.frameBorder = 1; 
iframe.width = "500px"; 
iframe.height = "250px"; 
iframe.id = "iframe"; 
iframe.src = "#"; 
program.appendChild(iframe); 
} 

// Minimize program // 

function minimizeprogram(element) { 
    document.getElementById(element).style.display = "hidden"; 
} 
function reopenprogram(element) { 
    document.getElementById(element).style.visibility = "visible"; 
} 

// Close program // 

function closeprogram(element) { 
    var container = document.getElementById("container"); 
    var app = document.getElementById(element); 

    container.removeChild(app); 

    remove(element); 
} 

// Tabs // 

function add(element) { 
    var tabs = document.createElement("li"); 
    tabs.id = ""+element+"tab"; 
    alert(element); 
    tabs.onclick = reopenprogram(element); 

    var add = document.getElementById("tabs"); 
    add.appendChild(tabs); 
} 
function remove(element) { 
    var add = document.getElementById("tabs"); 
    var app = document.getElementById(element+"tab"); 
    add.removeChild(app); 
} 

回答

1

在你的小提琴中,你永遠不會添加一個ID爲element參數值的元素給文檔。這是原因。

+0

可以請你改變它在小提琴代碼,以便它的工作? – 2012-04-28 12:42:55

+0

如果我知道它應該添加到什麼位置以及它應該如何創建(您似乎甚至不會在您的代碼中創建此元素)。 – 2012-04-28 12:54:01

+0

元素由html代碼中的onclick事件創建 – 2012-04-28 13:42:29