jQuery通过波斯数转换拉丁数

时间:2016-07-12 18:42:44

标签: javascript jquery

我希望将拉丁数字更改为波斯语数字,但我的代码工作正常,但此代码转换了代码<script><style>内的所有数字偶数! 我想在标记<script><style>

中替换正文中的数字

如何阻止在代码<script><style>内转换数字?

DEMO: https://jsfiddle.net/187L0jvz/

    persian={0:'۰',1:'۱',2:'۲',3:'۳',4:'۴',5:'۵',6:'۶',7:'۷',8:'۸',9:'۹'};
	function traverse(el){
		if(el.nodeType==3){
			var list=el.data.match(/[0-9]/g);
			if(list!=null && list.length!=0){
				for(var i=0;i<list.length;i++)
					el.data=el.data.replace(list[i],persian[list[i]]);
			}
		}
		for(var i=0;i<el.childNodes.length;i++){
			traverse(el.childNodes[i]);
		}
	}
    traverse(document.body);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
<div style="display:none"><h3><a href="http://www.ar.com">&#1662;&#1588;&#1578;&#1740;&#1576;&#1575;&#1606;&#1740;</a></h3></div>
</script>
<style>#baste{background:#76BE0E;right:50px;width:220px;}</style>
<div id="baste" style="color:#76BE0E">
  5858585258
</div>

1 个答案:

答案 0 :(得分:0)

在您的示例中,您正在解析和替换文档整个主体中的符号,包括脚本和其他标记。尝试仅解析这些数字的容器:

var elementToBeParsed = document.getElementById('baste'); //find div with numbers
traverse(elementToBeParsed);

UPD: 如果你需要解析页面的整个文本,我会用一些div包装内容,所以所有其他标签都在该容器之外。然后用该div调用遍历。

...    
<body>
  <style>.wrapper{background-color:#fff; .... }</style>
  <div id="content" class="wrapper">
     all the content here 123456
  </div>
  <script ...>...</script>
  <script ...>...</script>
</body>