php内部的Javascript函数,不起作用

时间:2017-04-12 08:48:50

标签: javascript php mysql

我有一个网页,显示文本框内数据库中的行。我已经制作了按钮,其中一个按钮在动态单击时会创建一个带输入框的行。因此,使用javascript编写的用于创建这些框的onClick函数不会被触发。 concole抛出的错误是addInput() not defined

<?php
    include('adodb/adodb.inc.php');

    echo '    <h1>\n' .
         '        Revenue Management Solution\n' .
         '    </h1>\n';

    echo '    <img alt   = "mxpresso logo"\n' .
         '         src   = "http://mxpresso.com/images/logo.png"\n' .
         '         style = "width : 171px; height : 108px;">\n\n';

    echo '    <h2>\n' .
         '        1. To See existing records\n' .
         '    </h2>\n';

    $db = NewADOConnection( 'mysql' );

    $db -> Connect( "127.0.0.1",
                    "vcc",
                    "abcd4",
                    "vcc" );

    $sql = "SELECT * FROM rev";

    $result = $db->Execute( $sql );

    if ( $result === false )
        die( "failed2" );

    $records = array();

    $count = $result -> RecordCount();
    echo "Total Records Found :".$count."<br>";

    if ( $count > 0 )
    {
        while ( !$result -> EOF )
        {
            $offerId   = $result -> fields[ 0 ];
            $affId     = $result -> fields[ 1 ];
            $status    = $result -> fields[ 2 ];
            $deduction = $result -> fields[ 3 ];

            echo '    <form action = "updatecopy.php"\n' .
                 '          method = "get"\n' .
                 '          target = "_blank">\n' .
                 '        <div id = "dynamicInput">\n' .
                 '            <table id    = "dataTable"\n' .
                 '                   class = "form">\n' .
                 '                <tbody>\n' .
                 '                    <tr>\n' .
                 '                        <td>\n' .
                 '                            <input checked  = "checked"\n' .
                 '                                   required = "required"\n' .
                 '                                   name     = "chk[]"\n' .
                 '                                   type     = "checkbox">\n' .
                 '                        </td>\n\n';

            echo '                        <td>\n' .
                 '                            <h4>\n' .
                 '                                OfferID\n' .
                 '                            </h4>\n\n';

            echo '                            <input name  = "update_for_offerid"\n' .
                 '                                   type  = "text"\n' .
                 '                                   value = ' .
                     $offerId .
                     '>\n' .
                 '                        </td>\n\n';

            echo '                        <td>\n' .
                 '                            <h4>\n' .
                 '                                AffId\n' .
                 '                            </h4>\n\n';

            echo '                            <input name  = "update_for_affid"\n' .
                 '                                   type  = "text"\n' .
                 '                                   value = ' .
                     $affId .
                     '>\n' .
                 '                        </td>\n\n';

            echo '                        <td>\n' .
                 '                            <h4>\n' .
                 '                                deduction :\n' .
                 '                            </h4>\n\n';

            echo '                            <input name  = "deduct"\n' .
                 '                                   type  = "text"
                 '                                   value = ' .
                     $deduction .
                     '>\n' .
                 '                        </td>\n\n';

            echo '                        <td>\n' .
                 '                            <h4>\n' .
                 '                                Status\n' .
                 '                            </h4>\n\n';

            echo '                            <input name  = "status"\n' .
                 '                                   type  = "text" ' .
                 '                                   value = ' .
                     $status .
                     '>\n' .
                 '                        </td>\n' .
                 '                    </tr>\n' .
                 '                </tbody>\n' .
                 '            </table>\n\n';

            echo '            <input type  = "submit"\n' .
                 '                   value = "Update Entry">\n' .
                 '        </div>\n' .
                 '    </form>\n\n';

            $rec = array( "offerId"      => $offerId,
                          "affiliate_id" => $affId,
                          "status"       => $status,
                          "deduction"    => $deduction );

            array_push( $records,
                        $rec );

            $result->MoveNext();
        }
    }

    echo '    <input type    = "button"\n' .
         '           onClick = "addInput(\'dynamicInput\')"\n' .
         '           value   = "Add another text input">\n\n';

    echo '    <script language = "Javascript"\n' .
         '            type     = "javascript">\n' .
         '        var counter = 1;\n' .
         '        var limit   = 3;\n\n';

    echo '        function addInput( divName )\n' .
         '        {\n' .
         '            if ( counter == limit )\n' .
         '            {\n' .
         '                alert( "You have reached the limit of adding " + counter + " inputs" );\n' .
         '        }\n' .
         '        else\n' .
         '        {\n' .
         '            var newtable = document.createElement( "dataTable1" );\n' .
         '            var td1 = document.createElement(\'td\');\n' .
         '            var td2 = document.createElement(\'td\');\n' .
         '            var td3 = document.createElement(\'td\');\n'
         '            var tr = document.createElement( \'tr\' );\n\n';

    echo '            td1.innerHTML = \'<h4>Entry</h4>\' + \'<br><input name = "myI" type = "text">\';\n\n';

    echo '            td2.innerHTML = \'<h4>Entry</h4>\' + \'<br><input name = "myI" type = "text">\';\n\n';

    echo '            td3.innerHTML = \'<h4>Entry</h4> \' + \'<br><input name = "myIn" type = "text">\';\n\n';

    echo '            tr.appendChild( td1 );\n' .
         '            tr.appendChild( td2 );\n' .
         '            tr.appendChild( td3 );\n\n';

    echo '            newtable.appendChild( tr );\n\n';

    echo '            document.getElementById( divName ).appendChild( newtable );\n\n';

    echo '            counter++;\n' .
         '        }\n' .
         '    </script>\n';
?>

3 个答案:

答案 0 :(得分:1)

我也很不容易发表评论,虽然这不是一个完整的答案,但我相信它会让你顺利通过。如果您要在浏览器中将此页面发送给您,那么&#34;检查&#34;使用您喜欢的浏览器的调试工具,您可能会发现javascript没有在浏览器中注册为&#34;脚本&#34; source,而是仅显示未显示的元素内的文本导致DOM规则。这当然使它不可执行,因为你可以告诉,因为事件没有被触发。 addInput()未定义,因为它在未注册的脚本中。

这就像这样有点棘手。 FWIW,我对此类事情的解决方案是在调用者中声明一个JS脚本 - &gt;它具有创建新页面的功能(当然使用JS),&gt;表示所有元素都已定义到已定义的脚本中,&#34; source&#34;该脚本是一个单独的JS文件。这也允许我使用IDE将脚本保存在单独的文件中。

有几种方法可以发布&#34;发布&#34;脚本作为元素,但需要发布到DOM。

答案 1 :(得分:0)

您错过了>

echo '<html

答案 2 :(得分:0)

javascript是区分大小写的,它应该是onclick而不是onClick。 我真的对你的代码有了更深入的了解,但如果这还没有解决,请告诉我