jQuery 将英文数字数组替换为阿拉伯数字数组
jQuery replace English Number array with Arabic Number array
我的页面上有很多 span class
<span class="price">AED 2129</span>
<span class="price">AED 4129</span>
我想用jQuery找出所有的跨度,然后用阿拉伯语单词迪拉姆替换AED,同时用阿拉伯数字替换数字。
这是我已经尝试了几个小时的当前代码。
jQuery('span.price').val(function(i,val) {
// text
var en_currency = "AED";
var ar_currency = "درهم";
// array
var f = ['0','1','2','3','4','5','6','7','8','9', en_currency];
var r = ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩', ar_currency];
var valArray = val.split(' ');
jQuery.each(valArray, function(i,v){
var inF = jQuery.inArray(v, f);
if(inF !== -1){
valArray[i] = v.replace(f[inF], r[inF]);
}
});
return valArray.join(' ');
});
使用 text
或 html
。 span
元素没有 value 属性。
jQuery('span.price').val(function(i,val) {
// ^^^
应该是
jQuery('span.price').text(function(i,val) {
演示:
// text
var en_currency = "AED";
var ar_currency = "درهم";
// array
var f = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var r = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];
jQuery('span.price').text(function(i, val) {
val = val.replace(en_currency, ar_currency);
var valArray = val.split('');
jQuery.each(valArray, function(i, v) {
console.log(i,v);
var inF = jQuery.inArray(v, f);
if (inF !== -1) {
valArray[i] = v.replace(f[inF], r[inF]);
}
});
return valArray.join('');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<span class="price">AED 2129</span>
<span class="price">AED 4129</span>
您需要使用text()
not val()
, val()
using for getting or setting form fields in case of span
text()
is needed. Then you can simplify your code with callback in replace()
// text
var en_currency = "AED";
var ar_currency = "درهم";
// array
var f = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var r = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];
jQuery('span.price').text(function(i, val) {
return val.replace(en_currency, ar_currency).replace(/\d/g, function(m) {
return r[f.indexOf(m)];
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="price"> AED 2312 </span>
<span class="price"> AED 1023 </span>
我的页面上有很多 span class
<span class="price">AED 2129</span>
<span class="price">AED 4129</span>
我想用jQuery找出所有的跨度,然后用阿拉伯语单词迪拉姆替换AED,同时用阿拉伯数字替换数字。
这是我已经尝试了几个小时的当前代码。
jQuery('span.price').val(function(i,val) {
// text
var en_currency = "AED";
var ar_currency = "درهم";
// array
var f = ['0','1','2','3','4','5','6','7','8','9', en_currency];
var r = ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩', ar_currency];
var valArray = val.split(' ');
jQuery.each(valArray, function(i,v){
var inF = jQuery.inArray(v, f);
if(inF !== -1){
valArray[i] = v.replace(f[inF], r[inF]);
}
});
return valArray.join(' ');
});
使用 text
或 html
。 span
元素没有 value 属性。
jQuery('span.price').val(function(i,val) {
// ^^^
应该是
jQuery('span.price').text(function(i,val) {
演示:
// text
var en_currency = "AED";
var ar_currency = "درهم";
// array
var f = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var r = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];
jQuery('span.price').text(function(i, val) {
val = val.replace(en_currency, ar_currency);
var valArray = val.split('');
jQuery.each(valArray, function(i, v) {
console.log(i,v);
var inF = jQuery.inArray(v, f);
if (inF !== -1) {
valArray[i] = v.replace(f[inF], r[inF]);
}
});
return valArray.join('');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<span class="price">AED 2129</span>
<span class="price">AED 4129</span>
您需要使用text()
not val()
, val()
using for getting or setting form fields in case of span
text()
is needed. Then you can simplify your code with callback in replace()
// text
var en_currency = "AED";
var ar_currency = "درهم";
// array
var f = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var r = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];
jQuery('span.price').text(function(i, val) {
return val.replace(en_currency, ar_currency).replace(/\d/g, function(m) {
return r[f.indexOf(m)];
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="price"> AED 2312 </span>
<span class="price"> AED 1023 </span>