我想将拉丁数字更改为波斯数字,但是我的代码工作正常,但是此代码将标签<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">پشتیبانی</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/