我想将拉丁数字更改为波斯数字,但是我的代码工作正常,但是此代码将标签<script><style>中的所有数字甚至数字转换!
我要替换标签<script><style>中正文编号中的数字

如何防止转换标签<script><style>中的数字?

演示: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>

最佳答案

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

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>

关于javascript - jQuery通过波斯数字转换拉丁数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38336618/

10-09 18:14
查看更多