2012-04-16 57 views
0

我有一個問題,替換不工作。JavaScript替換不工作

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

輸入後標籤的價值將是24.00£,但我想做的事該值數學然後把它帶回了新的價值。這不是刪除英鎊符號。

怎麼了?謝謝。

+1

只是說明:你可以使用替換(「£」,「」) – 2012-04-16 15:14:22

+0

*「這不是刪除英鎊符號。」*不刪除*其中*?它不會顯示在'alert'中,你一定會將它從你傳遞給alert的字符串中移除([proof](http://jsbin.com/etizuy))。這不會改變任何其他*。 – 2012-04-16 15:19:37

+0

你想做什麼,爲什麼你首先要去掉'£'? – 2012-04-16 15:20:22

回答

2

讀取/修改/寫入使用功能參數版本的.html()

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

將取代 '24.00£' 與 '34'。

+0

我不認爲OP想要替換HTML(至少不是英鎊符號)......他只是想提取數值來執行計算。 *編輯:*因爲他似乎想把修改後的值放回去,這可能仍然有用。 – 2012-04-16 15:17:38

+0

更新 - 但他確實說他希望它回到標籤中。 – Alnitak 2012-04-16 15:18:44

+0

我想你的意思是'var n = parseFloat(old);'或者簡單的'var n = + old.replace('£','');'。字符串沒有'parseFloat'方法。 – 2012-04-16 15:21:10

2

您需要設置從替換返回的值。嘗試下面,

var $label = $('input#membership_edc').next("label"); 
$label.html($label.html().replace(/£/g, "")); 
+0

我不認爲OP想要替換HTML ...他只是想提取數值來執行計算。 – 2012-04-16 15:16:34

+0

你能解釋我爲什麼不工作嗎? – 2012-04-16 15:16:35

+0

正確的菲利克斯,我只是想要的數值,以便我可以對其執行數學運算,然後把它修改。 – 2012-04-16 15:17:37

0

沒有錯。它正在工作here。 你確定你的標記是好的嗎?

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。

+0

似乎這不是OP想要的..請參閱我的答案中的註釋。 – 2012-04-16 15:20:00