2

我有代码可以在单击按钮时创建另一个“行”(带输入的 div)。我正在创建新的输入元素,一切正常,但是,我找不到访问这些新元素的方法。

示例:我有输入元素(下面的 name_1)。然后我使用 javascript 的createElement函数创建另一个输入元素(下面的 name_2)。

<input type='text' id='name_1' name="name_1" />
<input type='text' id='name_2' name="name_2" />

同样,我很好地创建了元素,但我希望能够在用户创建和修改 name_2 后访问它的值。例子:document.getElementById('name_2');

这行不通。如何让 DOM 识别新元素?是否可以?

我的代码示例(使用 jQuery):

function addName(){
var parentDiv = document.createElement("div");
$(parentDiv).attr( "id", "lp_" + id );

var col1 = document.createElement("div");
var input1 = $( 'input[name="lp_name_1"]').clone(true);
$(input1).attr( "name", "lp_name_" + id );
$(col1).attr( "class", "span-4" );
$(col1).append( input1 );

$(parentDiv).append( col1 );

$('#main_div').append(parentDiv);
}

我使用过 jQuery 和 JavaScript 选择器。示例:$('#lp_2').html()返回 null。也一样document.getElementById('lp_2');

4

5 回答 5

2

您必须使用 appendChild 等函数创建元素并将其添加到 DOM。有关详细信息,请参见此处

我的猜测是您调用了 createElement() 但从未将它添加到您的 DOM 层次结构中。

于 2008-09-24T18:36:21.710 回答
0

如果它被正确添加到 dom 树中,您将能够使用 document.getElementById 查询它。但是浏览器错误可能会引起麻烦,因此请使用像 jQuery 这样的 JavaScript 工具包来解决浏览器错误。

于 2008-09-24T18:37:09.510 回答
0

var input1 = $('input[name="lp_name_1"]').clone(true);

您发布的代码未指示任何具有该名称属性的元素。在这部分之前,您创建了一个具有相似id$("#lp_1")属性的元素,但您将使用它来选择它,即使在您将其插入文档之前也无法正常工作,直到之后您才这样做。

于 2008-09-24T19:07:57.923 回答
0
var input1 = $( 'input[name="lp_name_1"]').clone(true);

应该

var input1 = $( 'input[@name="lp_name_1"]').clone(true);

首先尝试一下,检查 input1 是否确实返回了某些内容(可能是某种调试语句),以确保这不是问题。

编辑:刚刚被告知这仅适用于旧版本的 JQuery,所以请忽略我的建议。

于 2008-09-24T19:08:57.030 回答
0

非常感谢您的回答。在离开并回到我的代码后,我注意到我犯了一个错误。我有两个以不同方式添加行的函数。我“100% 确定”我调用的是正确的(我发布的代码示例),但可惜我不是。

对于那些也遇到问题的人,我想说我收到的所有答案都是一个很好的开始,并且我已经将它们用于调试,它们将确保您的代码的正确性。

我的代码示例对于我的需要是 100% 正确的,我只需要调用它。(呃!)

再次感谢你的帮助,

-杰米

于 2008-09-24T19:40:13.167 回答