Javascript Multiple Function не работает

0

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

вот мои 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>

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

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

  • 1
    Как вы подумали об использовании document.form.getElementById и не поняли, что это разница между вашими рабочими функциями и вашими сбойными? Кроме того, проверка консоли на наличие ошибок должна быть первым шагом, который необходимо предпринять, когда все работает не так, как вы этого хотите.
  • 0
    Я не вижу, где вы вызываете последнюю функцию, два других являются обработчиками щелчков для некоторых элементов таблицы.
Показать ещё 2 комментария
Теги:

2 ответа

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 переменной

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

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню