Jquery使用Variable连接非常简单的计数器

时间:2013-05-04 12:23:36

标签: javascript jquery concatenation

关于另一个问题,我有一个工作脚本来创建动态表单字段:FIDDLE

我想我会弄明白其余部分,但我不明白为什么当我尝试为name分配新的IDtextarea属性时,它会给我{{ 1}}。

如果我这样做:

NAN

设置好,但是如果我尝试做的话:

i++;
 var newname = jQuery(prevDiv).attr('name');    
prevDiv.find('textarea').attr('name',i );

..这就是我需要的 - 我得到prevDiv.find('textarea').attr('name',newname +i );

我知道我的JS质量非常接近零,但我的语法错了吗?

4 个答案:

答案 0 :(得分:3)

name元素中没有jQuery(prevDiv)个attr。 name属性实际上位于文本字段中。

您的代码应如下所示:

    var newname = jQuery(prevDiv).find("textarea").attr('name');
    prevDiv.find('textarea').attr('name',newname + i ); 

更新了小提琴:http://jsfiddle.net/Ny5Y7/

答案 1 :(得分:2)

如果要实际对两个值求和:newname是字符串而不是数字。您必须先将变量强制转换为数字,然后再执行+ i。所以这样做:

 prevDiv.find('textarea').attr('name',parseInt(newname, 10) +i );

如果要连接它们,请使用额外的'':

prevDiv.find('textarea').attr('name',newname + '' + i );

答案 2 :(得分:2)

在您提供的第一个代码段中,应修改第二行以获取prevDiv中存在的textarea元素的 name 属性,如下所示。

var newname = jQuery(prevDiv).find('textarea').attr('name');
prevDiv.find('textarea').attr('name',newname + i ); 

在您的代码段中,您尝试读取prevDiv元素的name属性,该属性没有任何值。 (所以返回undefined)

这就是为什么在添加带有正确数字的undefined时会得到NAN(非数字)。

答案 3 :(得分:1)

您没有使用错误的语法。只需在那里强制执行一个字符串:

prevDiv.find('textarea').attr('name',newname + ' ' + i );

sum操作抛出NonANumberNaN错误,因为它试图执行算术加法,而不是字符串连接。

var i = 5; // typeof i = number;
var x = i + ""; // typeof x = string;
// or
var y = new String(i);// slower than doing the above.