我有一個問題,替換不工作。JavaScript替換不工作
alert($('input#membership_edc').next("label").html().replace(/£/g, ""));
輸入後標籤的價值將是24.00£,但我想做的事該值數學然後把它帶回了新的價值。這不是刪除英鎊符號。
怎麼了?謝謝。
我有一個問題,替換不工作。JavaScript替換不工作
alert($('input#membership_edc').next("label").html().replace(/£/g, ""));
輸入後標籤的價值將是24.00£,但我想做的事該值數學然後把它帶回了新的價值。這不是刪除英鎊符號。
怎麼了?謝謝。
讀取/修改/寫入使用功能參數版本的.html()
:
$('input#membership_edc').next("label").html(function(index, old) {
var n = parseFloat(old.replace('£', '');
return n + 10;
});
將取代 '24.00£' 與 '34'。
我不認爲OP想要替換HTML(至少不是英鎊符號)......他只是想提取數值來執行計算。 *編輯:*因爲他似乎想把修改後的值放回去,這可能仍然有用。 – 2012-04-16 15:17:38
更新 - 但他確實說他希望它回到標籤中。 – Alnitak 2012-04-16 15:18:44
我想你的意思是'var n = parseFloat(old);'或者簡單的'var n = + old.replace('£','');'。字符串沒有'parseFloat'方法。 – 2012-04-16 15:21:10
您需要設置從替換返回的值。嘗試下面,
var $label = $('input#membership_edc').next("label");
$label.html($label.html().replace(/£/g, ""));
我不認爲OP想要替換HTML ...他只是想提取數值來執行計算。 – 2012-04-16 15:16:34
你能解釋我爲什麼不工作嗎? – 2012-04-16 15:16:35
正確的菲利克斯,我只是想要的數值,以便我可以對其執行數學運算,然後把它修改。 – 2012-04-16 15:17:37
沒有錯。它正在工作here。 你確定你的標記是好的嗎?
字符串替換函數返回一個新的字符串。字符串本身在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。
似乎這不是OP想要的..請參閱我的答案中的註釋。 – 2012-04-16 15:20:00
只是說明:你可以使用替換(「£」,「」) – 2012-04-16 15:14:22
*「這不是刪除英鎊符號。」*不刪除*其中*?它不會顯示在'alert'中,你一定會將它從你傳遞給alert的字符串中移除([proof](http://jsbin.com/etizuy))。這不會改變任何其他*。 – 2012-04-16 15:19:37
你想做什麼,爲什麼你首先要去掉'£'? – 2012-04-16 15:20:22