为什么输入元素的父节点未定义?

时间:2009-12-11 15:04:00

标签: javascript dojo

我有一个表,我在其中动态添加一些行,并在新行中添加一个输入文本元素。当input元素中的文本发生更改时,我希望访问父行并对其执行某些操作。但是我的代码无法访问输入元素的父节点。以下是代码示例。这是什么原因?有一些工作吗?

行的创建看起来像这样:

var newRow = document.createElement('tr');
dojo.place(newRow, row, "after");
var td = document.createElement('td');
dojo.place(td, newRow, 'last');
dojo.attr(td, 'colspan', 2);
dojo.place(document.createTextNode('Track id:'), td, 'last');
var input = document.createElement('input');
dojo.place(input, td, 'last');
dojo.attr(input, 'type', 'text');
dojo.attr(input, 'value', 0);
dojo.attr(input, 'onchange', "JavaScript: onTrackIdChange(event);");

onTrackIdChange的初始部分如下:

function onTrackIdChange(event)
{
var textbox  = event.target;
console.log(textbox);
// lets find the parent row
var row = findParentRow(btn);

findParentRow的实现如下:

function findParentRow(node)
{
    var parent = node;
    do
    {
        console.log(parent);
        parent = parent.parentNode;
    }
    while (parent.nodeName != 'TR');
    return parent;
}

findParentRow函数失败,因为它表示未定义input元素的父元素。

2 个答案:

答案 0 :(得分:3)

在通话中findParentRow(btn),你不应该通过textbox代替btn吗?

您提交的代码中的其他位置没有引用此btn变量,因此如果按顺序,您应该发布一些与此相关的代码。

答案 1 :(得分:0)

未定义

parent,因为未定义节点。 node未在findParentRow中定义,因为btn未在onTrackIdChange中定义。