0

我遇到了替换不起作用的问题。

alert($('input#membership_edc').next("label").html().replace(/£/g, ""));

输入后标签的值为 24.00 英镑,但我想对该值进行数学运算,然后将其放回新值。它没有删除英镑符号。

怎么了?谢谢。

4

4 回答 4

2

您需要设置从替换返回的值。试试下面,

var $label = $('input#membership_edc').next("label");
$label.html($label.html().replace(/£/g, ""));
于 2012-04-16T15:15:34.003 回答
2

要读取/修改/写入,请使用函数参数版本.html()

$('input#membership_edc').next("label").html(function(index, old) {
    var n = parseFloat(old.replace('£', '');
    return n + 10;
});

将用“34”替换“£24.00”。

于 2012-04-16T15:16:25.983 回答
0

没有什么不对。它在这里工作。你确定你的标记没问题吗?

于 2012-04-16T15:17:10.720 回答
0

字符串替换函数返回一个新字符串。我认为,字符串本身在 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。

于 2012-04-16T15:19:01.273 回答