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