1

テーブルのすべての見出しから文字列を作成し、各見出しにチェックボックスを作成します。チェックされていない場合は列を非表示にし、チェックされている場合は表示する必要があります。関数はすべてのチェックボックスをdivに入れます。

ページがロードされたときに関数を呼び出しています(本文でオンロード)

これは私の機能です:

function getFirstRow(table) {
    var table = document.getElementById(table);
    var row = table.getElementsByTagName('tr')[0];
    var cells = row.getElementsByTagName('th');
    var str = "";
    for (var i=0; i < cells.length; i++) {
        str += "<input type='checkbox' onclick='hideOrShowCol('TreesTable', "+i+", this);' checked='checked' />" + cells[i].innerHTML + " ";
    }
    document.getElementById("hideAndShow").innerHTML = str;
}

これは非表示/表示機能です。

function hideOrShowCol(table, col, e) {
    alert(e.checked);
    var ifToShow = "";
    if (e.checked)
        ifToShow = "table-cell";
    else
        ifToShow = "none";
    var getTable = document.getElementById(table);
    var tds = getTable.getElementsByTagName("tr");
    for (var i = 0; i < tds.length; i++) {
        tds[i].childNodes[col].style.display = ifToShow;
    }
}

問題は、最初の関数でチェックボックスを作成しているときに関数を呼び出していないことですが、htmlに直接書いているときは次のようにうまく動作します:

<input type="checkbox" onclick="hideOrShowCol('TreesTable', 2, this);" checked="checked" />

誰かがそれが何であるかを知っていますか?? 私はすべてを試しました...ありがとう。

4

2 に答える 2

4

"<input type='checkbox' onclick='hideOrShowCol('TreesTable', "+i+", this);' checked='checked' />"onclickの単一引用符内にネストされた単一引用符'TreesTable'のため、は無効です。

に変更してみてください"<input type='checkbox' onclick='hideOrShowCol(\"TreesTable\", "+i+", this);' checked='checked' />"

于 2013-02-06T20:15:14.223 に答える
0

'i'を閉じて、匿名の自己呼び出し関数に渡してみてください。

for (var i=0; i < cells.length; i++) {
    (function(indx) {
        str += "<input type='checkbox' onclick='hideOrShowCol('TreesTable', "+indx+", this);' checked='checked' />" + cells[indx].innerHTML + " ";
    })(i);
}
于 2013-02-06T20:19:01.147 に答える