Javascript动态附加到数组

时间:2014-11-02 08:11:04

标签: javascript html arrays

我想创建一个带有按钮文本框和div的页面。

每当我在文本框中插入一个值并单击按钮时,该值应插入数组中,数组将显示在div中。

我尝试了以下代码:

<!DOCTYPE html>
<html>
<head>
<title> new staff </title>
<script type="text/javascript">
var data = new Array();

function createTable()
{
    var item = document.getElementById('push').value;
    data.push(item);

    var theader = '<table border="1">\n';
    var tbody = '';

    for( var i=0; i<data.length; i++)
    {
        tbody += '<tr>';
        tbody += '<td>';
        tbody += 'Cell ' + data[i] + ',' + j;
        tbody += '</td>'
        tbody += '</tr>\n';
    }
    var tfooter = '</table>';
    document.getElementById('wrapper').innerHTML = theader + tbody + tfooter;
}
</script>
</head>

<body>
<form name="tablegen">
<label>Push: <input type="text" name="push" id="push"/></label><br />
<input name="generate" type="button" value="Create Table!" onclick='createTable();'/>
</form>

<div id="wrapper"></div>
</body>
</html>

但没有任何反应。

3 个答案:

答案 0 :(得分:1)

    tbody += 'Cell ' + data[i] + ',' + j;

你从哪里拿走j?它没有在任何地方定义。

也许你的意思是i

删除它,它会正常工作。

tbody += 'Cell ' + data[i] + ',' + i;

答案 1 :(得分:0)

立即尝试:替换&#34; j&#34;与&#34;我&#34;并添加了一个id为&#34; divper&#34;。

的div标签
<!DOCTYPE html>
<html>
<head>
<title> new staff </title>
<script type="text/javascript">
var data = new Array();

function createTable()
{
    var item = document.getElementById('push').value;
    data.push(item);

    var theader = '<table border="1">\n';
    var tbody = '';

    for( var i=0; i<data.length; i++)
    {
        tbody += '<tr>';
        tbody += '<td>';
        tbody += 'Cell ' + data[i] + ',' + i;
        tbody += '</td>'
        tbody += '</tr>\n';
    }
    var tfooter = '</table>';
    document.getElementById('wrapper').innerHTML = theader + tbody + tfooter;
}
</script>
</head>

<body>
<form name="tablegen">
<label>Push: <input type="text" name="push" id="push"/></label><br />
<input name="generate" type="button" value="Create Table!" onclick='createTable();'/>
</form>

<div id="wrapper"></div>
</body>
</html>

答案 2 :(得分:0)

这是一个有效的fiddle

我建议摆脱令人讨厌的onclick方法,不好的做法。改为附加一个事件监听器。

这是JS。

var data = new Array();

function createTable()
{
    var item = document.getElementById('push').value;
    data.push(item);

    var theader = '<table border="1">\n';
    var tbody = '';

    for( var i=0; i<data.length; i++)
    {
        tbody += '<tr>';
        tbody += '<td>';
        tbody += data[i];
        tbody += '</td>'
        tbody += '</tr>\n';
    }
    var tfooter = '</table>';
    document.getElementById('wrapper').innerHTML = theader + tbody + tfooter;
}

var button = document.querySelector('input[name="generate"]');

button.addEventListener('click', createTable);

和HTML

<form name="tablegen">
    <label>Push: <input type="text" name="push" id="push"/></label><br />
    <input name="generate" type="button" value="Create Table!"/>
</form>

<div id="wrapper"></div>