0

アラビア数字をラテン数字に置き換えるには、数字をdiv:styleに変更せず、タグと...を変更しないのでどうすればよいですか?どうすればそれができますか?

デモ: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;"));

</ p>

4

1 に答える 1

1

さて、デコード部分を取り締まるのに少し時間がかかりました..しかしそれはうまくいきました..html全体を置き換えるだけでは変換できないと思います。代わりに、それぞれを解析して#textNode変換する必要があります。textNodeをチェックして変換する再帰関数を以下に示します。

デモ

免責事項:以下のコードはドラフトバージョンであり、間違いなく多くの改善を行うことができることに注意してください。それについては、あなたまたは他のSOユーザーに任せます。

コード:

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;
    }
});
于 2012-04-05T19:48:51.303 に答える