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 回答