2015-12-18 1 views
0

Я ищу цифры, введенные в tbQtyFailed и tbQtyTested, рассчитать% курс, а затем показать% в tbFailurePercent. Я думал, что могу сделать функцию JS, а затем присвоить значение tbFailurePercents с результатами, но не могу заставить его работать, и я не уверен, почему. Я прикрепил код. Благодаря!HTML/JS - Не удается получить текстовое поле 3 для обновления после ввода текста в текстовое поле 1 + 2?

<td>Qty Tested:</td> 
<td> 
    <input type="text" id="tbQtyTested"> 
</td> 
</tr> 
<script type="text/javascript"> 
    function PercentageMath() { 
     var qtyTested = document.getElementById("tbQtyTested"); 
     var qtyFailed = document.getElementById("tbQtyFailed"); 
     var failurePercent = parseFloat(qtyTested.value)/parseFloat(qtyFailed.value); 

     var display = document.getElementById("tbFailurePercent"); 
     display.value = failurePercent; 
    } else { 
     document.getElementById("tbFailurePercent").value = "NAN"; 
    } 
    }; 
</script> 
<tr> 
    <td>Bag Number of Previous Test Period:</td> 
    <td> 
     <input type="text" id="tbPreviousPeriod"> 
    </td> 
    <td>Result(s):</td> 
    <td> 
     <input type="text" id="tbResults" value="" onchange="PercentageMath()"> 
    </td> 
</tr> 
<tr> 
    <td>Bag Numbers within Failure Scope:</td> 
    <td> 
     <input type="text" id="tbBagsWithinScope"> 
    </td> 
    <td>Failure % (Failed/Tested):</td> 
    <td> 
     <input type="text" id="tbFailurePercent" disabled> 
    </td> 
</tr> 
+2

У вас есть 'else' но нет, если – artm

+1

Просьба [MCVE], предпочтительно в Plunker/Fiddle. У вас есть 'else' без' if', и я не вижу элемент 'tbQuantityFailed'. –

+0

@ artm - Остальное было пропущено слева от предыдущих неудач. @Igor Raush - я пропустил tbQuantityFailed в моем копировании кода. Спасибо, ребята, в любом случае, извините за работу crap paste. – TheAngryAuditor

ответ

0

В вашем коде отсутствует поле для qty, и поле результата не имеет никакого смысла. Я понятия не имею, что такое мешочные поля.

function perc() { 
 
    var qtyT = document.getElementById("qtyT").value; 
 
    var qtyF = document.getElementById("qtyF").value; 
 
    var fRes = document.getElementById("failPerc"); 
 
    var pRes = document.getElementById("passPerc"); 
 
    var failPerc = parseFloat(qtyF)/parseFloat(qtyT); 
 
    //console.log('fail%: ' + failPerc); 
 
    var passPerc = parseFloat(1 - failPerc); 
 
    //console.log('pass%: ' + passPerc); 
 
    fRes.value = (failPerc * 100) + "%"; 
 
    pRes.value = (passPerc * 100) + "%"; 
 
};
<table> 
 
    <tbody> 
 

 
    <tr> 
 
     <td>Qty Tested:</td> 
 
     <td> 
 
     <input type="text" id="qtyT"> 
 
     </td> 
 
     <td>Qty Failed:</td> 
 
     <td> 
 
     <input type="text" id="qtyF" oninput="perc();"> 
 
     </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td>Bag#PrevTest:</td> 
 
     <td> 
 
     <input type="text" id="bagPrev"> 
 
     </td> 
 
     <td>Passed:</td> 
 
     <td> 
 
     <input type="text" id="passPerc" readonly> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Bag#FailScope:</td> 
 
     <td> 
 
     <input type="text" id="bagFail"> 
 
     </td> 
 
     <td>Failed:</td> 
 
     <td> 
 
     <input type="text" id="failPerc" readonly> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

tbQtyFailed был пропущен в вставке, и я должен был удалить поля мешка в своем фрагменте кода, поскольку они не были уместны. Я почти ничего не знаю о HTML, но застрял в этом проекте на работе, поэтому спасибо. Могу ли я спросить, почему нужны fRes и pRes? Почему не _document.getElementById ("failPerc"). Значение = partseInt (qtyF)/parseInt (qtyT) _ работает? Какая потребность в временных переменных? Это потому, что вам нужно «загружать» элементы в функцию, иначе они не смогут получить к ним доступ? – TheAngryAuditor

+0

Причина, по которой есть некоторые переброски переменных, заключается в том, что она редко срабатывает для меня, если я пытаюсь сконденсировать слишком много шагов в выражении. Я уверен, что есть более оптимизированный способ сократить некоторые шаги, но в конечном итоге мне обычно приходится втягиваться в эти дополнительные шаги, чтобы разветвиться на другую функцию. Я думаю, что failPerc.value = qtyF/qtyT не использовался, потому что обычно в выражении я нахожу твердую переменную слева от '=', а выражение в правой части '=' редко терпит неудачу. – zer00ne

+0

О, я понимаю, что вы имеете в виду ... Я не использовал 'paresInt', потому что целые числа являются целыми числами, вы не можете получить ничего правого десятичного числа (например, 0,01). С 'parseFloat' вы можете. Btw, если вы хотите получить меньший результат, используйте '.toFixed()' https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed – zer00ne

Смежные вопросы