2012-04-05 4 views
0

アラビア数字をlatin numberに置き換えると、数値がdiv:styleに変更されず、タグも変更されません。どのようにそれを行うことができますか?番号が変更されていない番号をスタイルやその他のものに置き換えます。

DEMO:http://jsfiddle.net/mCUvT/

<div class="myGrid"> 
    <b style="top: 50px;">123456789-10-11-12</b> 
    <br /> 
    <span style="margin: 20px 0 10px 5px">05-10-1390</span> 
    <a href="http://blog.jsfiddle.net/" style="left: 20px">our blog</a> 
</div>​ 

var grid= $(".myGrid"); 
grid.html(grid.html().replace(/0/g,"&#1776;")); 
grid.html(grid.html().replace(/1/g,"&#1777;")); 
grid.html(grid.html().replace(/2/g,"&#1778;")); 
grid.html(grid.html().replace(/3/g,"&#1779;")); 
grid.html(grid.html().replace(/4/g,"&#1780;")); 
grid.html(grid.html().replace(/5/g,"&#1781;")); 
grid.html(grid.html().replace(/6/g,"&#1782;")); 
grid.html(grid.html().replace(/7/g,"&#1783;")); 
grid.html(grid.html().replace(/8/g,"&#1784;")); 
grid.html(grid.html().replace(/9/g,"&#1785;")); 

+0

は、iframeの問題のためにjsfiddle.net/skram/mCUvT/10/を試してみてください。私はそれがiFrameの内容を無視する方が良いと思う。 –

答えて

1

さて、それは復号化部を取り締まるためいつかました..しかし、それは..私はあなただけで置き換える変換できないと思いますうまくいきましたHTML全体ではなく、それぞれ#textNodeを解析して変換する必要があります。 textNodeをチェックして変換する再帰関数を見てください。

DEMO

免責事項:私はそれに私を修正するために、あなたや他のSOのユーザーにお任せします...以下のコードは、ドラフト版と間違いなく多くの改善を行うことができることに注意してください。 。

CODE:

var numConversion = { 
    '0': '&#1776;', 
    '1': '&#1777;', 
    '2': '&#1778;', 
    '3': '&#1779;', 
    '4': '&#1780;', 
    '5': '&#1781;', 
    '6': '&#1782;', 
    '7': '&#1783;', 
    '8': '&#1784;', 
    '9': '&#1785;' 
}; 

$(document).ready(function() { 
    var grid = $(".myGrid"); 

    var gridContent = grid.contents(); 
    convertText(gridContent); 

    function convertText(contents) { 
     contents.each(function() { 
      if (this.nodeType == 3) { 
       this.nodeValue = 
       $("<div/>").html(convert(this.nodeValue)).text(); 
      } else if (this.nodeType == 1) { 
       convertText($(this).contents()); 
      } 
     }); 
    } 

    $(".myGrid").html(grid.html()); 

    function convert(txt) { 
     var resultTxt = ''; 
     var textChar = ''; 
     for (var i = 0; i < txt.length; i++) { 
      textChar = txt.charAt(i); 
      if (numConversion.hasOwnProperty(textChar)) { 
       resultTxt += numConversion[textChar]; 
      } else { 
       resultTxt += textChar; 
      } 
     } 

     return resultTxt; 
    } 
}); 
+0

ありがとうございますが、このjsコードはie6〜ie9では機能しません。私は何をしますか? –

+0

@jenniferJolieどこが失敗したのか分かります。http://jsfiddle.net/skram/mCUvT/13/ –

関連する問題