0

HTMLファイルのonclickイベントによってトリガーされるダイアログボックスを作成できる次のjavascriptコードがあります。しかし、奇妙なことに、常にエラーが発生しますUncaught TypeError: Cannot read property 'style' of null。ちなみにTypeErrorはopenprogram(element)関数に関するものです!!! 要素が本当にnullかどうかはすでに確認しましたが、アラートに入れると通常の要素名が表示されました。コードが少しラフに見えることは承知していますが、提案は自由です。これがjsfiddleコードです。私はJavaScriptにかなり慣れていないので、コードを自分で完全に調整していただければ幸いです。

私を助けてください!

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);
}
4

1 に答える 1

1

あなたのフィドルでは、element引数値の id を持つ要素をドキュメントに追加することはありません。それが原因です。

于 2012-04-28T09:46:04.363 に答える