Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript字符串不是';t转换为HTML对象?_Javascript_Html - Fatal编程技术网

JavaScript字符串不是';t转换为HTML对象?

JavaScript字符串不是';t转换为HTML对象?,javascript,html,Javascript,Html,我想做的很简单:在一个div中添加一个1x20的输入单元格表 我创建了一个JavaScript函数 var tableHTML = function(attributes, rows, columns) { var retHTML = "<table " + attributes + ">"; for (var i = 0; i < rows; ++i) { retHTML += "<tr>"; for (va

我想做的很简单:在一个div中添加一个1x20的输入单元格表

我创建了一个JavaScript函数

var tableHTML = function(attributes, rows, columns)
{
    var retHTML = "<table " + attributes + ">";
    for (var i = 0; i < rows; ++i)
    {
        retHTML += "<tr>";
        for (var j = 0; j < columns; ++j)
            retHTML += "<td>&nbsp</td>";
        retHTML += "</tr>";
    }
    return (retHTML + "</table>retHTML");
}
var tableHTML=function(属性、行、列)
{
var retHTML=“”;
对于(变量i=0;i
为具有指定维度和属性的表提供HTML。然后,在HTML的主体中,我将

<div class="inner_div" id="input_table">
    <!-- div to house the table -->
</div>
<script type="text/javascript">
    document.getElementById("input_table").innerHTML += tableHTML("id=\"input_table\" type=\"input\"", 1, 20);
</script>

document.getElementById(“input\u table”).innerHTML+=tableHTML(“id=\“input\u table\”type=\“input\”,1,20);

我原以为能完成任务,但没能。我想这是因为我试图将字符串对象分配给HTML对象。我有点认为会有一个隐含的演员阵容。不管怎样,我想知道是否有人能“快速解决”我的问题。我不想重做解决这个问题的整个方法,但我也不介意有人告诉我做我正试图做的事情的正确方法——使用JavaScript在加载时填充HTML页面

我尝试了你的代码,它成功了:表已生成,显然是空的


但是要小心:如果你这样做,你会有两个相同ID的元素(输入表)

我的看法是这样的。我正在学习函数式编程,所以我在这里做了很多看起来像是在浪费编码的事情,但概念如下:

  • 获取尺寸
  • 创建一行
  • 复制该行以生成表
  • 然后把桌子还给我
如果要添加id、类等。。。使用makeTable返回的DOM元素

// Makes a single row
var makeRow = function(_columns) {
    var row = document.createElement('tr');
    var cell = document.createElement('td');
    var cols = _columns;
    while (cols) {
      row.appendChild(cell.cloneNode(true));
      cols--;   
    }
    return row;
}

// Makes a table
var makeTable = function(_rows, _columns) {
    var table = document.createElement('table');
    var row = makeRow(_columns);
    var rows = _rows;
    while (rows) {
        table.appendChild(row.cloneNode(true));
        rows--;   
    }
    return table;
}

您是否使用了诸如Firebug或Chrome之类的调试器进行了调试?innerHTML是一个字符串,公平地说,您的函数非常糟糕,但您应该真正了解如何使用DOM API并使用它而不是使用字符串构造表。看看createElement和appendChild。另外,你能在JSFIDLE上创建一个提琴来说明这个问题吗?