2013-11-29 8 views
0

Я использую три функции javascript для суммирования значений полей ввода. Но первые две функции работают хорошо, но третья функция не работает.Javascript Multiple Function не работает

вот мой JavaScripts:

<script language="javascript"> 
       function addNumbers() 
       { 
         var val1 = parseInt(document.getElementById("ot").value); 
         var val2 = parseInt(40); 
         var ansD = document.getElementById("totalot"); 
         ansD.value = val1 * val2; 
       } 
       function addSecincome(){ 
         var val1 = parseInt(document.getElementById("totalot").value); 
         var val2 = parseInt(document.getElementById("mc").value); 
         var val3 = parseInt("1024"); 
         var ansD = document.getElementById("secincome"); 
         ansD.value = val3 * val1 + val2; 

       } 
       function addIncome(){ 
        var val1 = parseInt(document.form.getElementById("totalot").value); 
         var val2 = parseInt("150");      
         var ansD = document.form.getElementById("INC"); 
         ansD.value = val2 * val1 ;     
       } 

     </script> 

Here is my html codes: 
    <tr height="20"> 
    <td height="20">BUYER</td> 
    <td colspan="3"><input type="text" name="buyer" value=" " /></td> 
    <td>OT</td> 
    <td><input id="ot" type="text" name="ot" value="" /></td> 
    <td><input type="text" id="totalot" name="totalot" onclick="javascript:addNumbers()" value="" /></td> 
    <td>MC</td> 
    <td><input id="mc" type="text" name="mc" value="" /></td> 
    <td colspan="2"><input id="secincome" type="text" onclick="javascript:addSecincome()" name="2ndincome" value="" /></td> 
    <td>SMV</td> 
    <td><input type="text" name="smv" value= " " /></td> 
    <td>O/QTY</td> 
    <td><input type="text" name="oqyt" value=" " /></td> 
    <td>TTL AVG</td> 
    <td><input type="text" name="planeffi" value=" " /></td> 
    </tr> 

    <tr height="20"> 
    <td height="20">DAY INPUT</td> 
    <td colspan="3"><input type="text" name="dayinput" value=" " /></td> 
    <td colspan="2">PLAN HOUR</td> 
    <td> <input type="text" name="planhour" vaue="10" /></td> 
    <td colspan="2">PRO/LOSS</td> 
    <td colspan="2"><input id="ploss" type="text" onclick="javascript:pp();" name="proloss" value="" /></td> 
    <td>TGT</td> 
    <td>T/TGT</td> 
    <td>CUTTING</td> 
    <td><input type="text" name="cutting" value=" " /></td> 
    <td rowspan="2"><input type="text" name="ttlavg" value=" " /></td> 
    <td>&nbsp;</td> 
    </tr> 

Хотя функция Синтекс таким же третья функция не работает для меня. Я пробовал с другим идентификатором ввода, но он не работает для меня. но работают первые две функции. Я не понимаю об этом выпуске, и у меня нет такой проблемы раньше.

Нужна ваша помощь.

+1

Как вы думаете об использовании 'document.form.getElementById' и не понимаете, что это разница между вашими рабочими функциями и вашей неудачной? Кроме того, проверка вашей консоли на наличие ошибок должна быть первым шагом, который вы предпринимаете, когда что-то не работает так, как вы хотите. – Tibos

+0

Я не вижу, где вы вызываете последнюю функцию, а две другие - обработчики кликов для некоторых элементов таблицы. – Slicedpan

+2

Почему в мире вам нужно использовать parseInt для создания целого числа из ... целого числа? Или даже от «150»? –

ответ

1

Переход от document.form.getElementById("totalot"); к document.getElementById("totalot");

function addIncome() { 
    var val1 = parseInt(document.getElementById("totalot").value); //Removed .form here 
    var val2 = parseInt("150");      
    var ansD = document.form.getElementById("INC"); //Removed .form here too 
    ansD.value = val2 * val1 ;     
} 

Я также просто понял, что ваш HTML-код не ссылается на вашу addIncome() функции в любом месте? Вам нужно прикрепить его к событию в вашем HTML. Две другие функции запускают onclick окна ввода.

<input id="secincome" type="text" onclick="javascript:addSecincome()" name="2ndincome" value="" /> 

Я хотел бы предложить изменения onclick к onchange. и затем вам нужно добавить следующую строку onchange="addIncome()" в нужное текстовое поле, чтобы запустить функцию, которая не работает.

Также val2 = parseInt("150") - это бессмысленно, вы создаете строку и меняете ее на число? - просто напишите val2 = 150, опуская "" цитаты вокруг значения, которое будет числом. или даже проще ansD.value = 150 * val1;. Нет необходимости назначать 150 переменной

Могу ли я также рассмотреть возможность сделать ваш код более динамичным, создав одну повторно используемую функцию, передав parameters в функцию, после чего вы сможете повторно использовать.

0

Попробуйте это вместо этого!

function addIncome() { 
    var val1 = parseInt(document.getElementById("totalot").value); 
    var val2 = parseInt("150");      
    var ansD = document.form.getElementById("INC"); 
    ansD.value = val2 * val1 ;     
} 
Смежные вопросы