Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript indexof不';直到变量为空或指定值时才更改,即使它应该检查每个keyup事件_Javascript_Indexof_Keyup - Fatal编程技术网

Javascript indexof不';直到变量为空或指定值时才更改,即使它应该检查每个keyup事件

Javascript indexof不';直到变量为空或指定值时才更改,即使它应该检查每个keyup事件,javascript,indexof,keyup,Javascript,Indexof,Keyup,我无法在每个键组上更新compatibilityIndex布尔值,因为它所依赖的indexof值只有在其中一个搜索值为空或具有指定值(如“rice”或“red wine”)时才会自动更新。有人知道吗,为什么它会发生,即使它应该在每次按键事件中检查它 <div class="row"> <h1 class="big col-xs-12">Prepare your dinner according to the reference of mixing rules to

我无法在每个键组上更新compatibilityIndex布尔值,因为它所依赖的indexof值只有在其中一个搜索值为空或具有指定值(如“rice”或“red wine”)时才会自动更新。有人知道吗,为什么它会发生,即使它应该在每次按键事件中检查它

<div class="row">
    <h1 class="big col-xs-12">Prepare your dinner according to the reference of mixing rules to attain the optimum harmony of taste.</h1>
</div>
    <hr />
    <h2 class="searchQ">Main ingredient</h2>
    <input type="text" name="ingredient1" class="search search1" value="">
    <hr />
    <h2 class="searchQ">Complementary ingredient</h2>
    <input type="text" name="ingredient2" class="search search2" value="">
    <hr />
    <h1>You <span class="can">can</span> mix <span class="searchVal1"></span> <span class="and"></span> <span class="searchVal2"></span> with:</h1>
    <ul class="list1"></ul>
    <ul class="list2"></ul>
    <script>
        var redWine = ['Red Wine','Cheese','Cured Meats','Red Meat'];
        var rice = ['Rice','White Wine','Chicken'];
        var whiteWine = ['White Wine','Chicken','Oyster','Rice'];

        var notFound = "Nope, don't think you can eat that";

        var search = $('.search');
        var search1 = $('.search1');
        var search2 = $('.search2');
        var search1conv = [];
        var search2conv = [];
        var compatibilityIndex = false;
        var can = $('.can');
        var searchVal1 = $('.searchVal1');
        var and = $('.and');
        var searchVal2 = $('.searchVal2');
        var list1 = $('.list1');
        var list2 = $('.list2');

        function checking(checkedVal, searchConv, list) {
            switch ( checkedVal.toLowerCase() ) {
                case 'red wine':
                case 'wine red':
                case 'wine, red':
                    list.empty();
                    searchConv = redWine;
                    for (var i = 1; i < redWine.length; i++) {
                        list.append('<li>' + redWine[i] + '</li>');
                    }
                    break;
                case 'rice':
                    list.empty();
                    searchConv = rice;
                    for (var i = 1; i < rice.length; i++) {
                        list.append('<li>' + rice[i] + '</li>');
                    }
                    break;
                case 'white wine':
                case 'wine white':
                case 'wine, white':
                    list.empty();
                    searchConv = whiteWine;
                    for (var i = 1; i < whiteWine.length; i++) {
                        list.append('<li>' + whiteWine[i] + '</li>');
                    }
                    break;
                default:
                    list.empty().append('<h2>' + notFound + '</h2>');
                    break;
            }
        }
        var compatible = function(ing1, ing2) {
            if ( ing1.indexOf(ing2[0]) > -1 && ing2.indexOf(ing1[0]) > -1 ) {
                compatibilityIndex = true;
            } else {
                compatibilityIndex = false;
            }
        }

        var main = function() {
            search.keyup(function() {
                if (search1.val() != 0 || search2.val() != 0) {
                    if (search1.val() != 0) {
                        checking( search1.val() , search1conv , list1 );
                    } else {
                        list1.empty();
                    }
                    if (search2.val() != 0) {
                        checking( search2.val() , search2conv , list2 );
                    } else {
                        list2.empty();
                    }
                } else {
                    searchVal1.empty();
                    searchVal2.empty();
                    list1.empty();
                    list2.empty();
                }
                if (search1.val() != 0 && search2.val() != 0) {
                    compatible(search1conv, search2conv);
                    if (compatibilityIndex) {
                        can.text('can').removeClass('red').addClass('green');
                    } else {
                        can.text('can\'t').removeClass('green').addClass('red');
                    }
                    searchVal1.text( search1.val() );
                    and.text('and' + " " + search1conv.indexOf(search2conv[0]) + " " + search2conv.indexOf(search1conv[0]));
                    searchVal2.text( search2.val() );
                } else {
                    if (search1.val() == 0) {
                        can.text('can').removeClass('red').removeClass('green');
                        searchVal1.empty();
                        and.empty();
                    } else {
                        searchVal1.text( search1.val() );
                    }
                    if (search2.val() == 0) {
                        can.text('can').removeClass('red').removeClass('green');
                        searchVal2.empty();
                        and.empty();
                    } else {
                        searchVal2.text( search2.val() );
                    }
                }
            });
        }

        $(document).ready(main);
    </script>

根据混合规则来准备晚餐,以达到最佳的口味和谐。

主要成分
补充成分
您可以与以下内容混合使用:
      var redWine=[“红酒”,“奶酪”,“腌肉”,“红肉]; var rice=[‘大米’、‘白葡萄酒’、‘鸡肉’]; var whiteWine=[“白葡萄酒”,“鸡肉”,“牡蛎”,“大米]; var notFound=“不,不要认为你可以吃那个”; var search=$('.search'); var search1=$('.search1'); var search2=$('.search2'); var search1conv=[]; var search2conv=[]; var相容性指数=false; 变量can=$('.can'); var searchVal1=$('.searchVal1'); var和=$('和'); var searchVal2=$('.searchVal2'); var list1=$('.list1'); var list2=$('.list2'); 函数检查(checkedVal、searchConv、list){ 开关(checkedVal.toLowerCase()){ “红酒”案例: “葡萄酒红”案例: 案例“葡萄酒,红色”: list.empty(); searchConv=红葡萄酒; 对于(变量i=1;i”+红葡萄酒[i]+“”); } 打破 “大米”一案: list.empty(); searchConv=大米; 对于(变量i=1;i'+rice[i]+''); } 打破 “白葡萄酒”案例: “白葡萄酒”案例: “白葡萄酒”一案: list.empty(); searchConv=白葡萄酒; 对于(变量i=1;i”+白葡萄酒[i]+“”); } 打破 违约: list.empty().append(“”+notFound+“”); 打破 } } var兼容=功能(ing1、ing2){ if(ing1.indexOf(ing2[0])>-1和&ing2.indexOf(ing1[0])>-1){ 相容性指数=真; }否则{ 相容性指数=假; } } var main=函数(){ search.keyup(函数(){ 如果(search1.val()!=0 | | search2.val()!=0){ 如果(search1.val()!=0){ 检查(search1.val(),search1conv,list1); }否则{ list1.empty(); } 如果(search2.val()!=0){ 检查(search2.val(),search2conv,list2); }否则{ list2.empty(); } }否则{ searchVal1.empty(); searchVal2.empty(); list1.empty(); list2.empty(); } 如果(search1.val()!=0&&search2.val()!=0){ 兼容(search1conv、search2conv); if(相容性指数){ can.text('can').removeClass('red').addClass('green'); }否则{ can.text('can't').removeClass('green').addClass('red'); } searchVal1.text(search1.val()); 和.text('and'+''+search1conv.indexOf(search2conv[0])+''+search2conv.indexOf(search1conv[0]); searchVal2.text(search2.val()); }否则{ 如果(search1.val()==0){ can.text('can').removeClass('red').removeClass('green'); searchVal1.empty(); and.empty(); }否则{ searchVal1.text(search1.val()); } 如果(search2.val()==0){ can.text('can').removeClass('red').removeClass('green'); searchVal2.empty(); and.empty(); }否则{ searchVal2.text(search2.val()); } } }); } $(文件).ready(主);
      首先,很抱歉,这并不是对您问题的回答,但当我开始阅读您的代码时,我发现变量和函数中存在大量冗余。这使您的代码更加复杂,调试更加困难。我将从简化代码开始。例如,您不需要checking1和checking2函数——它们都做相同的事情,只是对不同的数据进行操作。通过向函数传递更多数据,两组数据都可以使用一个函数:

      function checking(checkedVal, searchConv, list) {
          switch ( checkedVal.toLowerCase() ) {
              case 'red wine':
              case 'wine red':
              case 'wine, red':
                  list.empty();
                  searchConv = redWine;
                  for (var i = 1; i < redWine.length; i++) {
                      list.append('<li>' + redWine[i] + '</li>');
                  }
                  break;
              case 'rice':
                  list.empty();
                  searchConv = rice;
                  for (var i = 1; i < rice.length; i++) {
                      list.append('<li>' + rice[i] + '</li>');
                  }
                  break;
              case 'white wine':
              case 'wine white':
              case 'wine, white':
                  list.empty();
                  searchConv = whiteWine;
                  for (var i = 1; i < whiteWine.length; i++) {
                      list.append('<li>' + whiteWine[i] + '</li>');
                  }
                  break;
              default:
                  list.empty().append('<h2>' + notFound + '</h2>');
                  break;
          }
      }
      
      函数检查(checkedVal、searchConv、list){
      开关(checkedVal.toLowerCase()){
      “红酒”案例:
      “葡萄酒红”案例:
      案例“葡萄酒,红色”:
      list.empty();
      searchConv=红葡萄酒;
      对于(变量i=1;i”+红葡萄酒[i]+“”);
      }
      打破
      “大米”一案:
      list.empty();
      searchConv=大米;
      法罗群岛