私は通常 C/C++ プログラマーですが、私の仕事はすべてのソフトウェアが同じであると考えているため、mysql データベースに情報を入力するための Web ページを作成する必要があります。他のプログラマーの 1 人がすべての内部 Web ページに Perl CGI を使用しているため、一貫性を保つためにそれを使用することにしました。
ドロップダウンを作成するためにデータベースから必要な情報を格納するために、いくつかの異なるハッシュがあります。ハッシュに含まれるものは次のとおりです。
%issues
(IssueID : Issue)(Issue ID と問題の名前)
%step
(StepID : Step)(stepid with step名)
%stepissueid
(StepID : IssueID) (特定の問題に対して実行するさまざまな手順をリンクする)
Perl/HTML が問題のドロップダウンを作成する問題のドロップダウンが機能する*2 番目に依存するドロップダウンが機能しない*
#begin Issue Drop Down
print "<td valign=\"top\" colspan=1><font $c2> Issue:<br> ";
$temp = scalar keys %issue;
print "<select id='Issue1' name=\"optone\"";
print "onchange=\"setOptions(document.myform.optone.options[document.myform.optone.selectedIndex].value);\">";
foreach my $x (sort(keys %issue))
{
if ($x == $issueid)
{
print "<OPTION selected=selected value=\"$x\"> $issue{$x}</OPTION>";
}
else
{
print "<OPTION value=\"$x\"> $issue{$x}</OPTION>";
}
}
print "</select>";
print "<select name=\"opttwo\" size=\"1\">";
print "<option>Please select one of the options above first</option>";
print "</select>";
setOptions の Javascript: 要素の数や要素がわからないため、javascript と複数の if ステートメントを作成するループを作成しました。
print "<head>";
print "<script language=\"JavaScript\">";
print "<!--";
print "function setOptions(chosen){";
print "var selbox=document.myform.opttwo;";
print "selbox.options.length = 0;";
foreach my $x (sort(keys %issue))
{
print "if (chosen == $x)";
{
foreach my $y (sort(keys %step))
{
if ($stepissueid{$y} == $x)
{
print "selbox.options[selbox.options.length] = new";
print "Options('$step{$y}','$y');";
}
}
}
}
print "}";
print "//-->";
print "</script>";
print "</head>";
編集:文字通り再入力してすべてが機能したため、物事を混乱させていた目に見えない制御文字があったと確信しています。今私が抱えている問題は、DB から情報を受け取り、オプションが既に選択されている場合はステップのドロップダウンも自動選択したいということです (非アクティブな時間がかなりあることを知っています。他にもっと重要なことがありました)取り組むプロジェクト)
onselect=\"setOptions(document.myform1.optone.options[document.myform1.optone.selectedIndex].value);\">
opttwo select HTML の下にa を追加しようとしました が、何もしませんでした (2 番目のドロップダウンで JS 関数を呼び出して自動入力しようとしました)。