jQuery用阿拉伯数字数组替换英文数字数组

问题描述 投票:3回答:2

这节课我的页面上有很多跨度

<span class="price">AED &nbsp;2129</span>
<span class="price">AED &nbsp;4129</span>

我想使用jQuery查找所有跨度,然后用阿拉伯语Dirham替换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(' ');
});
javascript jquery arrays arabic
2个回答
3
投票

你需要使用text()而不是val()val()用于获取或设置表格字段,以便需要span text()。然后,您可以使用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>

3
投票

使用texthtmlspan元素没有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 &nbsp;2129</span>
<span class="price">AED &nbsp;4129</span>
© www.soinside.com 2019 - 2024. All rights reserved.