javascript取代不工作

时间:2012-04-16 15:12:53

标签: javascript jquery

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

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

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

怎么了?感谢。

4 个答案:

答案 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。