php中的Javascript函数,不起作用

php中的Javascript函数,不起作用,javascript,php,mysql,Javascript,Php,Mysql,我有一个网页,在文本框中显示数据库中的行。我制作了一些按钮,其中一个按钮在动态单击时会创建一个带有输入框的行。因此,不会触发使用javascript编写的用于创建这些框的onClick函数。concole抛出的错误是未定义的addInput() <?php include('adodb/adodb.inc.php'); echo ' <h1>\n' . ' Revenue Management Solution\n' .

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

<?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';
?>

您缺少一个

echo '<html

echo'javascript区分大小写,应该是onclick而不是onclick。

我并没有深入了解您的代码,但如果这不能解决问题,请告诉我,我太笨了,无法发表评论。虽然这不是一个完整的答案,但我相信它会让您一帆风顺。如果要在浏览器中交付此页面,然后使用您喜爱的浏览器的调试工具“检查”,您可能会发现javascript没有在浏览器中注册为“脚本”源,而只是元素中未显示的文本。这当然会使它不可执行,因为事件没有触发。addInput()未定义,因为它位于未注册的脚本中

这是一种复杂的分层方式。FWIW,我的解决方案是在调用者->中声明一个JS脚本,该脚本有一个创建新页面的函数(当然使用JS),>将所有元素附加到定义的脚本中,脚本的“源”是一个单独的JS文件。这还允许我使用IDE在单独的文件中维护脚本


有几种方法可以将脚本作为元素“发布”,但需要将其发布到DOM。

不要将所有内容都加粗。你也应该重新考虑你的策略。在PHP内的HTML内的JavaScript内分层HTML并不是最佳方案。记住,你可以结束你的
@tadman,而不是长篇大论的
echo
,我该怎么做呢?不,这不行,我的javascript可以工作,当我用一个简单的html代码执行它时。问题是将它与phpI一起使用,假设/select不应该存在?我正在测试你的代码,我会看看我得到了什么请这样做,让我知道顺便说一句-为什么所有的echo都在html/body之外?你能把ctrl+u的结果添加到你的帖子中吗?如果我回显我的html/js代码,html标签实际上不是必需的。您是否可以检查问题是在调用somwhere还是在函数内部