我有一个网页,显示文本框内数据库中的行。我已经制作了按钮,其中一个按钮在动态单击时会创建一个带输入框的行。因此,使用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';
?>
答案 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。 我真的对你的代码有了更深入的了解,但如果这还没有解决,请告诉我