繁体   English   中英

访问创建的 DOM 元素

[英]Accessing created DOM elements

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

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

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

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

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

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

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

应该

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

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

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

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

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

我的代码示例 100% 正确满足我的需要,我只需要调用它。 (呸!)

再次感谢你的帮助,

-杰米

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM