var e = $('textarea#cost-'+i).val(); // e = 1 (for first iteration)
alert($('p#subtotal-'+i).text()); // alert 'subtotal' which is the text in my p#subtotal-1
$('p#subtotal-'+i).text().replaceWith(e); // <- this is the problem, i think
alert($('p#subtotal-'+i).text()); // no alert box at all
这次我确定他们都有ids。
以下代码生成一个没有任何内容的警告框。 如果我将其更改为val(),则表示“未定义”
$('textarea.costbox').live('blur',function() {
for(var i in items) {
alert('iteration '+i);
alert('textarea#cost-'+i);
var e = $('textarea#cost-'+i).text();
alert('cost '+e);
}
});
<textarea name="cost-1" class="costbox"></textarea>
此代码的想法是在更改值时更新小计。 这是这个难题的最后一部分。
当我在chrome中检查时,所有HTML看起来都很正常。其余所有代码都运行正常。
这应该与modernizer1.7和jQuery1.5.1一起运行,基于最近的HTML5Boilerplate。
以下是同一基本内容的另一个例子 - http://jsbin.com/obeho5/3/edit
它可能很简单但我已经被困在这里几个小时而且看不到它。
[如果它不是明显和简单的东西,我可以发布更多的代码]
答案 0 :(得分:4)
#
用于获取ID,您的元素没有ID只是名称。
添加ID或使用它:
'textarea[name="cost-'+i+'"]'
答案 1 :(得分:2)
您未在your example中添加jQuery。它可以使用.val()
:http://jsbin.com/obeho5/4/edit
注意:其他人对于您在问题中发布的代码是正确的,但您在演示中的标记是不同的。在演示中,元素具有ID。
答案 2 :(得分:1)
$('textarea#cost-'+i).text();
正在寻找带有ID
的textarea,你给它起了一个名字,你需要这样做:
$('textarea[name="cost-' + i +'"]').text();
编辑:针对您更新的问题:
$('p#subtotal-'+i).text().replaceWith(e);
应该是
$('p#subtotal-'+i).text(e);
您无需担心replaceWith,您只需添加新文本作为方法的参数即可。