我希望将拉丁数字更改为波斯语数字,但我的代码工作正常,但此代码转换了代码<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">پشتیبانی</a></h3></div>
</script>
<style>#baste{background:#76BE0E;right:50px;width:220px;}</style>
<div id="baste" style="color:#76BE0E">
5858585258
</div>
答案 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>