2012-04-28 97 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