在包含输入类的Javascript中向表中添加一行

时间:2009-01-30 11:44:59

标签: javascript

我基本上尝试这样做:

    var tr = document.createElement("tr");
    var td = document.createElement("td");
    td.appendChild(document.createTextNode('<input class="param" type="text" name="dummy" value="fred"/>'));
    tr.appendChild(td);

但它只是显示输入...作为普通文本,如何插入它以便它按照我的要求工作..?

我猜测它需要改变的createTextNode?

干杯

3 个答案:

答案 0 :(得分:4)

你可以

td.innerHTML = '<input class="param" type="text" name="dummy" value="fred"/>';

var ip = document.createElement( 'input' );
ip.className = 'param';
ip.type = 'text';
ip.name = 'dummy';
ip.value = 'fred';

td.appendChild( ip );

修改

即不允许动态更改表单元素的类型。我很确定这只适用于元素已经有类型并且已经插入DOM的情况。最好检查一下。如果不起作用,请使用方法1

答案 1 :(得分:1)

尝试使用element的innerHtml属性。

尝试使用td.innerHtml = "<input ...../>"

答案 2 :(得分:1)

Meouw有正确的想法。您在示例中创建了一个文本节点,需要做的是创建一个dom元素。

这也是jQuery可以简化代码的另一种情况。你可以通过jQuery html(val)函数将元素添加为html字符串来尝试做的事情:

http://docs.jquery.com/Attributes/html#val

基本上,要在给定示例中应用此技术,您将在页面上包含jQuery库并编写以下行:

$("#someTable").html('<tr><td><input class="param" type="text" name="dummy" value="fred"/></td></tr>');

您还可以动态创建任何html元素,并将属性和事件处理程序串在一行中,如下例所示:

http://www.peterbe.com/plog/creating-dom-element-with-jquery

var textbox = $("<input type='text'></input>").attr('name','dummy').addClass('param').val('fred');
$("#someTableCell").append(textbox);