我使用这个js函数将我的英文数字转换成我的网页中的波斯语,但我如何开发以下代码来检测html标签。例如,如果我有标签DIV ID和#34; en"此功能无法转换此标记内的数据...
<br>
<* or div id=en><* or div><br>
我的代码:
function TraceNodes(e) {
if (e.nodeType == 3) e.nodeValue = e.nodeValue.toPersianDigit();
else
for (var t = 0; t < e.childNodes.length; t++) TraceNodes(e.childNodes[t])
}
String.prototype.toPersianDigit = function(e) {
return this.replace(/\d+/g, function(t) {
var n = [],
r = [];
for (var i = 0; i < t.length; i++) {
n.push(t.charCodeAt(i))
}
for (var s = 0; s < n.length; s++) {
r.push(String.fromCharCode(n[s] + (!!e && e == true ? 1584 : 1728)))
}
return r.join("")
})
};
TraceNodes(document);
答案 0 :(得分:0)
首先,您应该使用lang
属性来表示内容的语言。
所以你的代码应该是这样的:
function getParentLang(node) {
var defaultLang = 'fa';
var currLang = null;
while(currLang === null && node.parentNode) {
if (node.getAttribute && node.getAttribute('lang')) {
currLang = node.getAttribute('lang');
}
node = node.parentNode;
}
return currLang || defaultLang;
}
function TraceNodes(e) {
if (e.nodeType == 3 && getParentLang(e) === 'fa' /* Persian */) {
e.nodeValue = e.nodeValue.toPersianDigit();
} else {
for (var t = 0; t < e.childNodes.length; t++) {
TraceNodes(e.childNodes[t]);
}
}
}
遍历DOM树以查找具有指定lang
属性的节点的第一个父节点。如果此属性等于'fa'
,则会调用toPersianDigit
方法。