我遇到了替换不起作用的问题。
alert($('input#membership_edc').next("label").html().replace(/£/g, ""));
输入后标签的值为 24.00 英镑,但我想对该值进行数学运算,然后将其放回新值。它没有删除英镑符号。
怎么了?谢谢。
我遇到了替换不起作用的问题。
alert($('input#membership_edc').next("label").html().replace(/£/g, ""));
输入后标签的值为 24.00 英镑,但我想对该值进行数学运算,然后将其放回新值。它没有删除英镑符号。
怎么了?谢谢。
您需要设置从替换返回的值。试试下面,
var $label = $('input#membership_edc').next("label");
$label.html($label.html().replace(/£/g, ""));
要读取/修改/写入,请使用函数参数版本.html()
:
$('input#membership_edc').next("label").html(function(index, old) {
var n = parseFloat(old.replace('£', '');
return n + 10;
});
将用“34”替换“£24.00”。
没有什么不对。它在这里工作。你确定你的标记没问题吗?
字符串替换函数返回一个新字符串。我认为,字符串本身在 javascript 中是不可变的。正如 Vega 所拥有的那样:
// 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。