0

我正在使用 JavaScript 向表中动态添加行,我在每一行中创建了一些文本框,我在其中一个文本框中添加了一个 onkeyup 事件:

               var myTotal = "1";
           var spanTotal = document.createElement("span");
           spanTotal.innerHTML = "<input style=\"width:50px\" type=\"text\" name=\"total\" value=" + myTotal + ">";


spanCount.onkeyup = function ()
{
alert(spanTotal.innerHTML);
    };

然后我将此跨度(呈现为 HTML 文本框)添加到我的表格行中。我想拥有我动态创建的文本框的值,但是每当我更改此文本框时,此文本框的初始值都会显示在警报框中(即 1)。此文本框的初始值为“1”,但当我更改它(例如在文本框中键入 0)时,警报框中再次显示“1”。我想要动态创建的文本框的价值,我应该给我的跨度一个 ID 吗?我应该如何定义 spanCount.onkeyup 函数?它应该在哪里定义,以便我可以得到这个文本框的确切值?

4

2 回答 2

1

我创建了一个jsFiddle。您可以使用 childNodes 获取输入框的值。您使用的代码中还有其他问题,而spanCount不是spanTotal.

修改后的代码:

var myTotal = "1";
var spanTotal = document.createElement("span");
spanTotal.innerHTML = "<input style=\"width:50px\" type=\"text\" name=\"total\" value=" + myTotal + ">";
document.body.appendChild(spanTotal);

spanTotal.onkeyup = function() {
    alert(spanTotal.childNodes[0].value);
};​ 
于 2012-10-04T12:34:35.750 回答
1

下面修改的代码也许可以解决您的问题:

var myTotal = 1;

/* object creation */
var span = document.createElement('span');

var input = document.createElement('input');
input.setAttribute('type', 'text');
input.setAttribute('name', 'total');
input.setAttribute('style', 'width:50px;');
input.setAttribute('value', myTotal);

// append each object to respective container
span.appendChild(input);
document.appendChild(span);

/* event handler */
input.onkeyup = function(){
  alert(this.value);
}
于 2012-10-04T12:44:47.433 回答