这个javascript代码如何检测HTML标签?

时间:2015-06-03 12:06:43

标签: javascript html

我使用这个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);

1 个答案:

答案 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方法。