访问创建的DOM元素

时间:2008-09-24 18:34:10

标签: javascript jquery html dom

我有代码在按钮点击时创建另一个“行”(带输入的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');

也是如此

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

如果它已正确添加到dom树中,您将能够使用document.getElementById进行查询。但是浏览器错误可能会导致麻烦,因此请使用jQuery之类的JavaScript工具包来解决浏览器错误。

答案 2 :(得分:0)

  

var input1 = $('input [name =“lp_name_1”]')。clone(true);

您发布的代码并未指明具有该name属性的任何元素。在此部分之前,您创建一个具有相似的 id 属性的元素,但您可以使用$("#lp_1")来选择该元素,甚至在您将其插入到文件,你直到事后才做。

答案 3 :(得分:0)

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

应该是

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

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

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

答案 4 :(得分:0)

非常感谢您的回答。走开后回到我的代码,我注意到我犯了一个错误。我有两个功能,以不同的方式添加线。我“100%肯定”我正在调用正确的(我发布的代码示例),但唉,我不是。

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

我的代码示例100%正确我需要的东西,我只需要调用它。 (咄!)

再次感谢您的帮助,

-Jamie