如何使用字符串调用函数

时间:2013-02-06 20:12:08

标签: javascript .net html5

我正在从表格的所有标题创建一个字符串,为每个标题创建一个复选框,如果未选中该列表,则应该隐藏该列,并显示其是否已选中。 该函数将所有复选框放在div中。

我在页面加载时调用该函数(正文中的onload)

这是我的功能:

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" />

有人知道它可以是什么?我尝试了一切...... 感谢。

2 个答案:

答案 0 :(得分:4)

"<input type='checkbox' onclick='hideOrShowCol('TreesTable', "+i+", this);' checked='checked' />"无效,因为'Tree Table'周围的单引号嵌套在onclick的单引号内。

尝试更改为"<input type='checkbox' onclick='hideOrShowCol(\"TreesTable\", "+i+", this);' checked='checked' />"

答案 1 :(得分: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);
}