2017-09-24 4 views
0

私は、選択されたオプションに応じて入力に対して異なる結果を与える関数を作成しています。しかし、イブはそれを働かせるのに問題があった。私はこの機能では "カウンター"を使用する必要がありますが、私は正常に動作するようにすることができませんでした。誰でもこのコードを動作させる方法に関するヒントやヒントを教えてもらえますか?jquery関数のパラメータカウンタが機能しない

これは、jQueryのコードです:

function test90(element, input, inpArray, secIndex, inpActive, counter, Ipp) { 
       Ipp = $("#" + element.id).data(inpActive); 
       if (counter == 0){ 
        counter++; 
        $(element).data(inpActive, "primary"); 
        inpArray[0]=("result1"); 
       }else 
       if (Ipp=="no") { 
        counter++; 
        $(element).data(inpActive, "yes"); 
        inpArray[secIndex]="result2";     
       }else 
       if (Ipp=="yes") { 
        counter--; 
        $(element).data(inpActive, "no");    
        inpArray[secIndex]=""; 
       }else 
       if (Ipp=="primary" && counter!==1) { 
        counter--; 
        $(element).data(inpActive, "no"); 
        inpArray[0]="result3";  
       }else 
       if (Ipp=="primary" && counter==1) { 
        counter--; 
        $(element).data(inpActive, "no"); 
        inpArray[secIndex]=""; 
        inpArray[0]="result4";  
       } 
       $(input).val(inpArray[0]+inpArray[1]+inpArray[2]); 
       $("#z1").html("counter = "+counter); 

       $("#z2").html("Ipp = "+Ipp);     
      }; 
      var inpreco = ["", "", ""]; 
      var inprocess = ["", "", ""]; 
      var cpcounter1 = 0; 
      var cpcounter2 = 0; 

      $(".opcaopreco1").click(function() { 
       cpcounter1=test90(this, "#preco", inpreco, "cpindex1", "cpactive1", cpcounter1, "Ipp1"); 
      }); 
      $(".opcaopreco2").click(function() { 
       cpcounter2=test90(this, "#process", inprocess, "cpindex2", "cpactive2", cpcounter2, "Ipp2"); 
      }); 

これはhtmlコードです:

<input id="preco" type="text" name="preco" value='preco'><br><br> 
    <input id="process" type="text" name="process" value='process'><br><br> 
<div id="op1l" class="input"> 
    <input type="checkbox" id="op1" class="opcaopreco1" value="Start1" data-cpindex1="1" data-cpactive1="no"> 
    <label for="op1"></label> 
    <span class="itext">preco1</span> 
</div>  
<div id="op2l" class="input"> 
    <input type="checkbox" id="op2" class="opcaopreco1" value="Start2" data-cpindex1="2" data-cpactive1="no"> 
    <label for="op2"></label> 
    <span class="itext">preco2</span> 
</div> 
<div id="op3l" class="input"> 
    <input type="checkbox" id="op3" class="opcaopreco1" value="Start3" data-cpindex1="3" data-cpactive1="no"> 
    <label for="op3"></label> 
    <span class="itext">preco3</span> 
</div> 
<br> 
<div id="op4l" class="input"> 
    <input type="checkbox" id="op4" class="opcaopreco2" value="Start1" data-cpindex2="1" data-cpactive2="no"> 
    <label for="op4"></label> 
    <span class="itext">process1</span> 
</div>  
<div id="op5l" class="input"> 
    <input type="checkbox" id="op5" class="opcaopreco2" value="Start2" data-cpindex2="2" data-cpactive2="no"> 
    <label for="op5"></label> 
    <span class="itext">process2</span> 
</div> 
<div id="op6l" class="input"> 
    <input type="checkbox" id="op6" class="opcaopreco2" value="Start3" data-cpindex2="3" data-cpactive2="no"> 
    <label for="op6"></label> 
    <span class="itext">process3</span> 
</div> 
<ul id="z"> 
    <li id="z1">z1</li>   
    <li id="z2">z2</li> 
</ul> 

答えて

1

あなたはtest90によって値の戻りを代入しているが、関数は値を返しません。 。したがって、関数からカウンタを返す必要があります。さもなければ、関数から未定義の値が返されます。 試してみてください。

function test90(element, input, inpArray, secIndex, inpActive, counter, Ipp) { 
       Ipp = $("#" + element.id).data(inpActive); 
       if (counter == 0){ 
        counter++; 
        $(element).data(inpActive, "primary"); 
        inpArray[0]=("result1"); 
       }else 
       if (Ipp=="no") { 
        counter++; 
        $(element).data(inpActive, "yes"); 
        inpArray[secIndex]="result2";     
       }else 
       if (Ipp=="yes") { 
        counter--; 
        $(element).data(inpActive, "no");    
        inpArray[secIndex]=""; 
       }else 
       if (Ipp=="primary" && counter!==1) { 
        counter--; 
        $(element).data(inpActive, "no"); 
        inpArray[0]="result3";  
       }else 
       if (Ipp=="primary" && counter==1) { 
        counter--; 
        $(element).data(inpActive, "no"); 
        inpArray[secIndex]=""; 
        inpArray[0]="result4";  
       } 
       $(input).val(inpArray[0]+inpArray[1]+inpArray[2]); 
       $("#z1").html("counter = "+counter); 

       $("#z2").html("Ipp = "+Ipp); 

       return counter; /* ADD RETURN LIKE THIS */ 
      }; 
      var inpreco = ["", "", ""]; 
      var inprocess = ["", "", ""]; 
      var cpcounter1 = 0; 
      var cpcounter2 = 0; 

      $(".opcaopreco1").click(function() { 
       cpcounter1=test90(this, "#preco", inpreco, "cpindex1", "cpactive1", cpcounter1, "Ipp1"); 
      }); 
      $(".opcaopreco2").click(function() { 
       cpcounter2=test90(this, "#process", inprocess, "cpindex2", "cpactive2", cpcounter2, "Ipp2"); 
      }); 
+0

問題を解決しました。ありがとう – Adato

関連する問題