我遇到了替换不工作的问题。
alert($('input#membership_edc').next("label").html().replace(/£/g, ""));
输入后标签的值为24.00英镑,但我想对该值进行数学计算,然后将其与新值一起放回去。它并没有删除英镑符号。
怎么了?感谢。
答案 0 :(得分:2)
您需要设置替换返回的值。请尝试以下,
var $label = $('input#membership_edc').next("label");
$label.html($label.html().replace(/£/g, ""));
答案 1 :(得分:2)
要读取/修改/写入使用.html()
的功能参数版本:
$('input#membership_edc').next("label").html(function(index, old) {
var n = parseFloat(old.replace('£', '');
return n + 10;
});
将用'34'取代'£24.00'。
答案 2 :(得分:0)
没错。它正在运作here。 你确定你的标记没问题吗?
答案 3 :(得分:0)
字符串替换函数返回一个新字符串。我认为字符串本身在javascript中是不可变的。正如维加所说:
// avoid looking this up twice
var label = alert($('input#membership_edc').next("label");
// replace and assign
label.html(label.html().replace(/£/g, ""));
编辑:
从字符串中获取数值:
var amount = alert($('input#membership_edc').next("label").html().match(/£\s*([-0-9.]+)/)[1];
这匹配£后面的数字等(忽略空格),并使用数组中的索引1,包含第一组匹配的内容(在括号中)。
" £1.45".match(/£\s*([-0-9.]+)/)[1]; // returns "1.45"
请注意它仍然是一个字符串,所以你可能想在它上面做parseFloat。