2017-05-27 7 views
0

を持つ要素を見つけます。 Tihsは次の関数です。私は、この表はPHPとブートストラップとHTMLで書いていjqueryの

function verificar_existencia(nome) { 

     var table = $("#tabela-resultado tbody"); 
     var nomeTabela = ''; 

     table.find('tr').each(function (nome) { 
     var $tds = $(this).find('td'), 
      nomeTabela = $tds.eq(0).text() 


     }); 

     if(trim(nome.toUpperCase()) === trim(nomeTabela.toUpperCase())) { 

       toastr.success("This element already exists!!!", "Aviso"); 
       //return false; 
     } 
    } 

しかし、うまくいかないのですか?私はテーブル内の要素が重複しないように、テーブル内の要素を見つける必要があります。

答えて

1

あなたはすべての行をループしてnomeTabela反復ごとに上書きされます。

このように、一度ループは、それが唯一の最後の行で見つかった値で終了し、それがあなたの比較のような各行何かの各値のために、ループ内のチェックを行います

上で行われているものです。

function verificar_existencia(nome) { 
    nome = nome.trim().toUpperCase(); 

    var table = $("#tabela-resultado tbody"); 
    var isMatch = false; 


    table.find('tr').each(function(nome) { 
     var $tds = $(this).find('td'); 
     var nomeTabela = $(this).find('td').eq(0).text(); 
     // compare each value inside the loop 
     if (nome === nomeTabela.trim().toUpperCase()) { 
     isMatch = true; 
     return false; /// break the loop when match found 
     } 

    }); 

    if (isMatch) { 

     toastr.success("This element already exists!!!", "Aviso"); 
     //return false; 
    } 

} 

はまた、ここでは表の最初の列にデュープ文字列を識別するための方法ですお使いのブラウザのコンソール

+0

私はこのエラーを取得しています: '予期しないトークンvar'を – HawkB

+0

は、変数$ tds''の後を参照してください? '、'で終わります。代わりに ';'で置き換えてみてください。 – Ukasyah

+0

それがループ内 – charlietfl

0

にエラーとして表示されるはずですString#trim()のあなたの誤った使用に注意してください。

var $trs = $("table tr"), dupes = []; 
 

 
function san(str) { 
 
    return str.text().trim().toUpperCase(); 
 
} 
 

 
$trs.each(function() { 
 
    var origTd = $(this).find("td:first"), origTr = $(this); 
 
    $trs.each(function() { 
 
    var newTd = $(this).find("td:first"), 
 
     newTr = $(this), 
 
     origTrIdx = origTr.index(), 
 
     newTrIdx = newTr.index(), 
 
     origTdStr = san(origTd), 
 
     newTdStr = san(newTd); 
 
    if (
 
     origTrIdx > newTrIdx && 
 
     dupes.indexOf(origTdStr) < 0 && 
 
     origTdStr === newTdStr 
 
    ) { 
 
     dupes.push(origTdStr); 
 
     console.log(
 
     'This element "' + 
 
      origTd.text() + 
 
      '" already exists!!!' 
 
    ); 
 
     return false; 
 
    } 
 
    }); 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<table> 
 
    <tr> 
 
    <td>foo</td> 
 
    <td>bar</td> 
 
    </tr> 
 
    <tr> 
 
    <td>foo</td> 
 
    <td>bar</td> 
 
    </tr> 
 
    <tr> 
 
    <td>unique</td> 
 
    <td>bar</td> 
 
    </tr> 
 
    <tr> 
 
    <td>unique2</td> 
 
    <td>bar</td> 
 
    </tr> 
 
    <tr> 
 
    <td>unique2</td> 
 
    <td>bar</td> 
 
    </tr> 
 
    <tr> 
 
    <td>unique2</td> 
 
    <td>bar</td> 
 
    </tr> 
 
    <tr> 
 
    <td>foo</td> 
 
    <td>bar</td> 
 
    </tr> 
 
</table>

関連する問題