2016-12-10 7 views
0

HTMLマークアップ内のすべての数字をペルシア語の数字に変換できますが、変換番号から特定のクラスを除外します。すべての数値を変換する、特定のクラスを除外する

コードを次のように変更しましたが、機能しません。

DEMO:https://jsfiddle.net/o87bdzba/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
persian={0:'۰',1:'۱',2:'۲',3:'۳',4:'۴',5:'۵',6:'۶',7:'۷',8:'۸',9:'۹'}; 
 
\t function traverse(el){ 
 
\t \t if(el.nodeType==3){ 
 
\t \t \t var list=el.data.match(/[0-9]/g); 
 
\t \t \t if(list!=null && list.length!=0){ 
 
\t \t \t \t for(var i=0;i<list.length;i++) 
 
\t \t \t \t \t el.data=el.data.replace(list[i],persian[list[i]]); 
 
\t \t \t } 
 
\t \t } 
 
\t \t for(var i=0;i<el.childNodes.length;i++){ 
 
\t \t \t traverse(el.childNodes[i]); 
 
\t \t } 
 
\t } 
 
    //traverse(document.body.not('.dont_convert')); ** this 
 
traverse(document.body);
November <span class"dont_convert">2016</span> Community Moderator Election RESULTS 
 
Documentation Update, November 29th

答えて

3

要素は "dont_convert" クラスを持っているかどうかを確認できます。

persian={0:'۰',1:'۱',2:'۲',3:'۳',4:'۴',5:'۵',6:'۶',7:'۷',8:'۸',9:'۹'}; 
 
function traverse(el){ 
 
    if(el.classList && el.classList.contains('dont_convert')){ 
 
    return; 
 
    } 
 
    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> 
 
November <span class="dont_convert">2016</span> Community Moderator Election RESULTS Documentation Update, November 29th
UPDATE:jQueryのバージョン

persian={0:'۰',1:'۱',2:'۲',3:'۳',4:'۴',5:'۵',6:'۶',7:'۷',8:'۸',9:'۹'}; 
 
function traverse(el){ 
 
    if($(el).hasClass('dont_convert')){ 
 
    return; 
 
    } 
 
    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> 
 
November <span class="dont_convert">2016</span> Community Moderator Election RESULTS Documentation Update, November 29th

+0

このdoes't作業、参照します。https://jsfiddle.net/o87bdzba/2/ –

+1

面白い。それは動作するようです。多分あなたのブラウザは古いですか? –

+0

@Mehdi jqueryバージョンが追加されました。それを試してください、おそらくあなたのブラウザで動作します –

関連する問題