我如何获得每个值,以便我可以比较它?

时间:2016-10-05 12:02:12

标签: javascript jquery html

我有这样的事情:

 <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>

我想检查代码是否在桌面上,所以我的javascript函数是这样的。 假设函数在表中找到代码,它将返回值true

   function codevvy(code) {

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

然后我在调试时从浏览器中收到此错误

  

jquery-2.1.1.min.js:2未捕获的TypeError:b.apply不是函数

似乎我的jquery错了,但我找不到解决方案

如何获取td中的每个值以便我可以比较它?

5 个答案:

答案 0 :(得分:2)

除了将each return each codevvy()内的filter()添加两次的错误语法不会返回外部函数,并且您不会返回任何内容 function codevvy(code) { return $('.codeverify').filter( function (index,e) { return $(this).text() === code }).length > 0; }

可以使用:contains并返回找到的集合长度

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

您也可以使用'{{}}'选择器。请注意,这不是绝对匹配

'{{r.Name}}'

答案 1 :(得分:1)

您对.each的来电不需要再次选择对象,只需输入功能:

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;
}

您可能需要在实际比较之前对比较中的两段文本进行标准化,以确保您比较相同的案例/样式/空白等。

答案 2 :(得分:1)

试试这段代码:

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>

以上javascript上的一些要点:

  • 您不会从each()循环返回值。这就是我使用名为result的var将返回的原因。 return内的each只会破坏它;

  • 您可以在this循环中使用each,因为您在html集合中运行它。

答案 3 :(得分:-1)

试试你的每个环:

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

答案 4 :(得分:-1)

试试这个:

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

而不是:

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