javascript
  • jquery
  • html
  • 2016-10-05 1 views -1 likes 
    -1

    Ich habe so etwas wie dies:Wie kann ich jeden Wert in bekommen, damit ich es vergleichen kann?

    <table id="table_append"> 
        <tr class='text-center'>" + 
         <td>1</td>  
         <td class="codeverify">025</td> 
         <td> Data1 </td> 
        </tr> 
        <tr class='text-center'>" + 
         <td>2</td>  
         <td class="codeverify">036</td> 
         <td> Data2 </td> 
        </tr> 
        <tr class='text-center'>" + 
         <td>3</td>  
         <td class="codeverify">044</td> 
         <td> Data2 </td> 
        </tr> 
    </table> 
    

    Ich möchte überprüfen, ob der Code auf dem Tisch, und so meine Javascript-Funktion ist wie diese. Angenommen , wenn die Funktion find Code in der Tabelle, wird es Rückgabewert true

    function codevvy(code) { 
    
        $('.codeverify').each($('.codeverify'), function (index,e) { 
         var repo =$(e).text(); 
         if (repo == code) { 
          return false; 
         } 
         else { return true;} 
        }); 
    

    Und dann bekam ich diesen Fehler aus Browser, wenn ich debuggen

    jquery-2.1.1.min.js:2 Uncaught TypeError: b.apply is not a function

    Es scheint, dass mein Jquery falsch ist, aber ich kann‘ t finden Sie die Lösung

    Wie kann ich jeden Wert in td bekommen, damit ich es vergleichen kann?

    +0

    Werfen Sie einen Blick auf: [ '.each()'] (https://api.jquery.com/each/) [jQuery Lerning Mitte] (https: //learn.jquery.com/) – Andreas

    +1

    Löschen Sie das zweite Array: $ ('. codeverify'). je (function (index, e) {... – vlatkokaplan

    +0

    Bitte lesen Sie diesen Link, der Ihnen helfen könnte [wie Sie die HTML TABLE erhalten Particullar Cell Value mit Javascript?] (Http://stackoverflow.com/questions/4253558/how-to-get-the-html-table-particullar-cell-value-using-javascript) –

    Antwort

    1

    Ihr Anruf zu .each keine Objekte braucht wieder zu wählen, füttern sie nur die Funktion:

    function codevvy(code) { 
        let result = false; // for not found 
        $('.codeverify').each(function (index,e) { 
         let repo =$(e).text(); 
         if (repo == code) { 
          result = true; 
          return false; // no unneeded iterations after a match is found 
         } 
        }); 
        return result; 
    } 
    

    Möglicherweise müssen Sie beiden Teile des Textes im Vergleich vor dem eigentlichen Vergleich zu normalisieren, um sicherzustellen, Sie‘ re den gleichen Fall zu vergleichen/style/Leerzeichen usw.

    +0

    keine 'Rückkehr' von' codevvy() 'here ... wird immer undefined zurückkommen – charlietfl

    +0

    Sie haben recht, ich habe das repariert, danke.Wahrscheinlich sollte die Antwort von @DontVoteMeDown trotzdem upvote sein, aber ** ist ** besser. – Kris

    +1

    FYI - benutz' return false' brechen ein 'jeder' – charlietfl

    -1

    Versuchen Sie dies für Ihre eachloop:

    $('.codeverify').each(function (index,e) { 
        var repo =$(e).text(); 
        if (repo == code) { 
         return false; 
        } 
        else { return true;} 
    }); 
    
    +0

    Rückkehr innerhalb 'each' kehrt nicht zur äußeren Funktion zurück – charlietfl

    1

    diesen Code Versuchen:

    function codevvy(code) { 
     
        var result = false; 
     
        
     
        $('#table_append .codeverify').each(function() { 
     
         var repo = $(this).text(); 
     
         if (repo == code) { 
     
          result = true; 
     
          return false; 
     
         } 
     
        }); 
     
        
     
        return result; 
     
    } 
     
    
     
    console.log(codevvy("025")) 
     
    console.log(codevvy("045"))
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <table id="table_append"> 
     
        <tr class='text-center'> 
     
         <td>1</td>  
     
         <td class="codeverify">025</td> 
     
         <td> Data1 </td> 
     
        </tr> 
     
        <tr class='text-center'> 
     
         <td>2</td>  
     
         <td class="codeverify">036</td> 
     
         <td> Data2 </td> 
     
        </tr> 
     
        <tr class='text-center'> 
     
         <td>3</td>  
     
         <td class="codeverify">044</td> 
     
         <td> Data2 </td> 
     
        </tr> 
     
    </table>

    Einige Punkte auf der Javascript oben:

    • Sie keinen Wert aus einer each() Schleife zurück. Deshalb habe ich eine Var namens result verwendet, um außerhalb es zurückzukehren. Die return innerhalb der each wird nur brechen;

    • Sie können this innerhalb der each Schleife verwenden, da Sie es über eine HTML-Sammlung ausführen.

    +0

    Gute Antwort + Beispiel + detaillierte Stil Erklärung, würde +3 gegeben haben, wenn ich könnte – Kris

    +0

    danke für schnelle Antwort, das ist, was ich vorhabe zu tun. Ich merke nur, dass meine Funktion nicht nach draußen zurückgekehrt ist. Anfänger und ESL obwohl, also vergib mir, wenn meine Frage zu flach ist – KokoriNut

    +0

    @KokoriNut kein Problem mein Freund. Ich bin froh, dass ich helfen kann. – DontVoteMeDown

    -1

    Try this:

    $.each($('.codeverify'), function (index,e) {} 
    

    Statt dessen:

    $('.codeverify').each($('.codeverify'), function (index,e) {} 
    
    2

    Über die falsche Syntax der Zugabe der Sammlung zweimal auf Ihre each ... return innerhalb each kehrt nicht zu die äußere Funktion und Sie geben nichts zurück von codevvy()

    Kann filter() für diese und gibt die Länge der Sammlung verwenden gefunden

    function codevvy(code) { 
        return $('.codeverify').filter(function (index,e) { 
          return $(this).text() === code 
        }).length > 0; 
    } 
    

    Sie könnten auch :contains Wähler nutzen können.Hinweis: Dies ist keine absolute Übereinstimmung

    function codevvy(code) 
        return $('.codeverify:contains(' + code + ')').length > 0; 
    } 
    
    Verwandte Themen