>

저는 사람들이 실시간 데이터를 볼 수있는 시스템을 구축하려고하는 데 문제가 있습니다. 500 그램의 우유를 넣으면 사람들은 지방, 과자, 고체의 가치있는 내용을 볼 수 있습니다. 지방, 단 것, 고형물 등과 같은 다른 것들을위한 우유 무게의 테스트 박스와 읽기 전용 텍스트 상자가 있어야합니다.

이제 우유의 무게 변화에 따른 지방, 단맛, 고형물의 가치를 업데이트하고 싶습니다

어느 정도 달성했지만 문제는 우유의 가치를 낮추더라도 가치가 계속 높아진다는 것입니다.

여기에 코드를 추가하고 있습니다. 확인하고 도움이나 제안이 있으면 대단히 감사하겠습니다.

HTML

  <td><input type="text" name="name" placeholder="Weight" class='smalltextbo onlynumbers' id="w<?=$thedetails_array['sno']?>" onkeyup="return updatevalues(this);" onkeypress="return isNumber(event);"; value='1'/></td>
                      <td><input type="text" name='fat' value="<?=$thedetails_array['fat']?>" id="fat<?=$thedetails_array['sno']?>" readonly></td>
                      <td><input type="text" name='sweet' value="<?=$thedetails_array['sweet']?>" id="sweet<?=$thedetails_array['sno']?>" readonly></td>
                      <td><input type="text" name='solid1' value="<?=$thedetails_array['solid1']?>" id="solid<?=$thedetails_array['sno']?>" readonly></td>

JAVASCRIPT

function updatevalues(vale){
            var mainid=$(vale).attr("id");
            var onlyidis=mainid.substr(1);
            var mainval=$('#w'+onlyidis).val();
            var varfatval=$('#fat'+onlyidis).val();
            $('#fat'+onlyidis).val(varfatval*mainval);
            var varfatval=$('#sweet'+onlyidis).val();
            $('#sweet'+onlyidis).val(varfatval*mainval);

}

1 그램의 우유에 지방과 달콤하고 실제 고형분에 대한 데이터가 있습니다. 여기 우유의 실제 무게로 업데이트하십시오.

여기에 이미지가 있습니다

아직도 어떤 해결책도 얻지 못해서 나를 더 잘 도울 수있는 사람이 있습니까 ??


  • 답변 # 1

    실수로 고형분의 가치는 이전 가치를 고려하여 가지고있는 가치에 곱하는 것입니다.

    이것은 분명히 틀렸다 :

           var varfatval=$('#fat'+onlyidis).val();
            $('#fat'+onlyidis).val(varfatval*mainval);
            var varfatval=$('#sweet'+onlyidis).val();
            $('#sweet'+onlyidis).val(varfatval*mainval);
    
    
    varfatval 이후

     이전 값이며 mainval 를 곱합니다.  필요한 값을 곱하는 대신 예를 들어 다음과 같이 필요한 값을 어떻게 든 초기화해야합니다 (각각 12와 13 대신 올바른 값 사용).

    <script type="text/javascript">
        var fat = 12;
        var sweet = 13;
    </script>
    
    

    다음과 같이 업데이트에이 값을 사용하십시오 :

    function updatevalues(vale){
                var mainid=$(vale).attr("id");
                var onlyidis=mainid.substr(1);
                var mainval=$('#w'+onlyidis).val();
                $('#fat'+onlyidis).val(fat*mainval);
                $('#sweet'+onlyidis).val(sweet*mainval);
    
    }
    
    

  • 답변 # 2

    해당 값을 업데이트하기 전에 입력을 비워야합니다 ..

    function updatevalues(vale){
            var mainid=$(vale).attr("id");
            var onlyidis=mainid.substr(1);
            var mainval=$('#w'+onlyidis).val();
            var varfatval=$('#fat'+onlyidis).val();
            $('#fat'+onlyidis).val();
            $('#fat'+onlyidis).val(varfatval*mainval);
            var varfatval=$('#sweet'+onlyidis).val();
            $('#sweet'+onlyidis).val();
            $('#sweet'+onlyidis).val(varfatval*mainval); 
     }
    
    

  • 답변 # 3

    I am trying to build a system where people can see the realtime data like, if I put 500 grams of milk then people can see the value content of fat, sweets [...] the problem is the value keeps on multiplying even on decreasing the value of milk

    다른 사람들이 언급했듯이, 입력 가중치를 기반으로 다른 내용의 값을 실시간 (클라이언트 측)으로 계산하려면 원래 승수를 클라이언트 측 코드에 저장해야합니다.

    예 : 성분의 지방 양을 표시하고 성분이 성분 1g 당 지방이 0.4g임을 알고 있으면 승수는 0.4입니다. 실제 무게가 변경되면 배율에서 콘텐츠 값을 다시 계산해야합니다.

    코드에서 서버 측 코드에서 승수 값을 삽입하지만 클라이언트 측 재 계산을 위해 원래 승수를 별도로 저장하지 않는 것 같습니다. 다음과 같이 JavaScript 코드로 저장할 수 있습니다.

    <script>
    var milkMultipliers = {
      fat: 0.01,
      sweetness: 3.2
    }
    </script>
    
    
    또는 승수를 해당 HTML 요소의 데이터 속성으로 저장할 수 있습니다 (예 : 아래 데모 코드 라인을 따라 :

    function update(elm){
      var ingredient = elm.id;
      var computables = ['fat', 'protein', 'carbo'];
      for(var i = 0; i < computables.length; i++){
        var tableCell = document.getElementById(ingredient + '-' + computables[i]);
        var multiplier = tableCell.getAttribute('data-multiplier');
        tableCell.innerHTML = (+elm.value) * (+multiplier); 
      }
    }
    update(document.getElementById('milk'));
    update(document.getElementById('butter'));
    
    
    th, td{
      text-align: left;
      padding: 0.4em;
    }
    body, input{
      font-family: sans-serif;
    }
    
    
    <table>
      <tr>
        <th>Ingredient</th>
        <th>Weight</th>
        <th>Fat</th>
        <th>Protein</th>
        <th>Carbohydrates</th>
      </tr>
      <tr>
        <td>Milk</td>
        <td>
          <input id="milk" onkeyup="update(this)" value="1"/>
        </td>
        <td id="milk-fat" data-multiplier="0.01"></td>
        <td id="milk-protein" data-multiplier="0.034"></td>
        <td id="milk-carbo" data-multiplier="0.05"></td>
      </tr>
        <tr>
        <td>Butter</td>
        <td>
          <input id="butter" onkeyup="update(this)" value="1"/>
        </td>
        <td id="butter-fat" data-multiplier="0.81"></td>
        <td id="butter-protein" data-multiplier="0.009"></td>
        <td id="butter-carbo" data-multiplier="0.001"></td>
      </tr>
    </table>
    
    

  • 답변 # 4

    지방, 스위트 등의 함량을 계산하는 대신 지방, 스위트 입력란에 이전 값을 곱하면됩니다.

    // calculate amount of fat from milk amount i.e from mainval
    $('#fat'+onlyidis).val(calculatedValue);
    // calculate amount of sweet from milk amount i.e from mainval
    $('#sweet'+onlyidis).val(calculatedValue);
    
    

관련 자료

  • 이전 python - 다른 열과 다른 열을 데이터 프레임 그룹에 추가
  • 다음 php - codeigniter에서 이미지 크기를 조정할 수 없습니다