首页 > 解决方案 > 使用 javascript、mysql、php 和 html 打印包含工资计算的网页

问题描述

我正在尝试为员工创建工资单。我能够从数据库中检索工资信息并显示在页面上。我还可以使用 javascript 函数计算从工资中扣除的薪水,并将其传递到 html 页面。但是,当我通过打印机通过页面上的打印按钮发出打印命令时,没有打印休假工资扣除值。在这方面的任何帮助将不胜感激,因为这几天我一直在努力解决这个问题。

HTML 代码:

echo '<div id = "divToPrint">';

        echo '<form name = "formName1"><table>';

echo '<tr><td colspan = "9"><B>Salary Break Up:</B></td></tr>';

            echo '<tr><td colspan = "6">Basic:</td><td>'.$rows[13].'</td><td></td></tr>';
            echo '<tr><td colspan = "6">DA:</td><td>'.$rows[14].'</td><td></td></tr>';
            echo '<tr><td colspan = "6">HR:</td><td>'.$rows[15].'</td><td></td></tr>';

            $a = $rows[13]+$rows[14]+$rows[15];

            echo '<td colspan = 7"><B>Gross Salary(A):</B></td><td><B>'.$a.'</B></td></tr>';

            echo '<tr><td colspan = "8">&nbsp;</td></tr>';

            echo '<tr><td colspan = "8"><B>Deductions:</B></td></tr>';

            echo '<tr><td colspan = "6">Provident Fund:</td><td>'.$rows[16].'</td><td></td></tr>';
            echo '<tr><td colspan = "6">Income Tax:</td><td>'.$rows[17].'</td><td></td></tr>';
            echo '<tr><td colspan = "6">EMI:</td><td>'.$rows[18].'</td><td></td></tr>';

            echo '<tr><td colspan = "6">Loan:</td><td>'.$rows[19].'</td><td></td></tr>';
            echo '<tr><td colspan = "6">Other Deduction:</td><td>'.$rows[21].'</td><td></td></tr>';

            $deduction = $rows[16]+$rows[17]+$rows[18]+$rows[19]+$rows[21];

            echo '<tr><td>Leaves Taken</td>';

echo '<td><select name = "leaves_taken" onChange="setForm2Value()">';

                echo '<option value = "">Select...</option>';
                echo '<option value = "0">0</option>';
                echo '<option value = "1">1</option>';
                echo '<option value = "2">2</option>';
                echo '<option value = "3">3</option>';
                echo '<option value = "4">4</option>';

echo '</select></td>';

            echo '<td colspan = "4">Leave Salary Deduction</td>';

            echo '<td><input type = "text" name = "leave_sal_deduction" id = "leave_sal_deduction" border = "0"></td><td></td></tr>';

            echo '<td colspan = 7"><B>Total Deductions(B):</B></td>
            <td><input type = "text" name = "total_deduction" id = "total_deduction"></td></tr>';

            echo '<tr><td colspan = "8">&nbsp;</td></tr>';


            $d = "Net Salary(A - B): ";
            echo '<td colspan = "7"><B>'.$d.'</B></td>';
            echo '<td><input type = "text" name = "total_salary" id = "total_salary"></td></tr>';

        }

    echo '</table></form>';

        echo '</div>';

Javascript代码:

function PrintDiv() {    

var divToPrint = document.getElementById('divToPrint');

var popupWin = window.open('', '_blank');

popupWin.document.open();

popupWin.document.write('<html><body onload="window.print()">');

popupWin.document.write(divToPrint.innerHTML + '</html>');

popupWin.document.close();

            }

使用 JavaScript 计算离职工资:

function setForm2Value() {

    var selectedItem      = document.formName1.leaves_taken.selectedIndex;
    var selectedItemValue = document.formName1.leaves_taken.options[selectedItem].value;
    var selectedItemText  = document.formName1.leaves_taken.options[selectedItem].text;

    if (selectedItem != 0) {
        //document.formName1.textboxName1.value = selectedItemText;


        //Getting Gross Salary
        var net_sal = "<?php echo $a ?>";
        var net_sal1 = parseInt(net_sal);


        //Calculation of Leave Salary Deduction
        var abc = ((net_sal1 / 30) * selectedItemValue).toFixed(2);
        var abc1 = parseInt(abc) ;  


        //Printing Leave Salary Deduction
        $("#leave_sal_deduction").val(abc1);

        //Calculating Total Deduction
        var d = "<?php echo $deduction ?>";
        var d1 = parseInt(d);

         var b = parseInt(d1 + abc1);

        //Displaying Total Deduction
        $("#total_deduction").val(b);



        //Calculating Total Payable Salary
        var total = (net_sal1 - b);
        $("#total_salary").val(total);

通过打印机打印页面预览。 无法通过打印机使用打印方法将休假工资扣除和净工资值打印在页面上。

标签: javascriptphpjqueryhtmlcss

解决方案


设置元素的值不会更新 html。要更新 html,您可以使用 object.setAttribute 例如更新元素 leave_sal_deduction 的 html

document.getElementById('leave_sal_deduction').setAttribute("value",document.getElementById('leave_sal_deduction').value);

您可以在获取 divToPrint 的 html 之前将其添加到您的打印功能


推荐阅读