[英]Perl CGI & JavaScript | Select Option troubles
我很難確定下面的代碼為什么不起作用:
test.cgi:
#!/usr/bin/perl -w
use CGI;
$cgi = new CGI;
$cgi->autoEscape(undef);
%ptype = ("0","","1","Pennsylvania","2","New York","3","Ohio");
print $cgi->header('text/html'),
$cgi->start_html(-title=>'Test',-script=>[{-type=>'javascript',-src =>'/scripts/test.js'}]),
$cgi->start_form(-method=>'GET',id=>'frmMain',-name=>'frmMain',-enctype=>'multipart/form-data'),
$cgi->popup_menu(-style=>'width:200',name=>'ProblemType',-values=>\%ptype,-onChange=>'PopulateSType()',-default=>'0'),
$cgi->popup_menu(-style=>'width:200',name=>'SubProblemType',-values=>''),
$cgi->end_form,
$cgi->end_html();
test.js:
function PopulateSType() {
var ProblemList = document.frmMain.ProblemType;
ClearOptions(document.frmMain.SubProblemType);
if (ProblemList[ProblemType.selectedIndex].value == "1") {
AddToOptionList(document.frmMain.SubProblemType, "0", "");
AddToOptionList(document.frmMain.SubProblemType, "1", "Pittsburgh");
AddToOptionList(document.frmMain.SubProblemType, "2", "Philadelphia");
AddToOptionList(document.frmMain.SubProblemType, "3", "Harrisburg");
}
if (ProblemList[ProblemType.selectedIndex].value == "2") {
AddToOptionList(document.frmMain.SubProblemType, "0", "");
AddToOptionList(document.frmMain.SubProblemType, "1", "New York");
AddToOptionList(document.frmMain.SubProblemType, "2", "Buffalo");
AddToOptionList(document.frmMain.SubProblemType, "3", "Middletown");
}
if (ProblemList[ProblemType.selectedIndex].value == "3") {
AddToOptionList(document.frmMain.SubProblemType, "1", "Cleveland");
AddToOptionList(document.frmMain.SubProblemType, "2", "Cincinatti");
AddToOptionList(document.frmMain.SubProblemType, "3", "Akron");
}
}
function ClearOptions(OptionList) {
for (x = OptionList.length; x >= 0; x = x - 1) {
OptionList[x] = null;
}
}
function AddToOptionList(OptionList, OptionValue, OptionText) {
OptionList[OptionList.length] = new Option(OptionText, OptionValue);
}
樣本源輸出:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"><head><title>Process Alarm</title>
<script language="JavaScript" src="/scripts/test.js" type="javascript"></script>
</head><body><form method="get" action="/cgi-bin/test.cgi/test.cgi?null" enctype="multipart/form-data" name="frmMain" id="frmMain">
<select name="ProblemType" onchange="PopulateSType()" style="width:200">
<option value="1">Pennsylvania</option>
<option value="3">Ohio</option>
<option selected="selected" value="0"></option>
<option value="2">New York</option>
</select><select name="SubProblemType" style="width:200">
<option value=""></option>
</select></form></body></html>
看起來一切正常,但是,當我加載頁面時,第二個選擇選項按鈕沒有任何反應。 如果在頁面加載時應用了寬度樣式,則似乎是命中注定的問題。 我什至嘗試過window.onload = load;
在test.js的頂部。 我所看到的唯一可能是不對的是perl,是將onChange格式化為onchange。
Java在常規HTML中運行良好,試圖在perl中實現它似乎只是有問題。 我從這里使用一個例子
<script language="JavaScript" src="/scripts/test.js" type="javascript">
它應該是type="text/javascript"
,這是瀏覽器支持的JS的MIME媒體類型。 本身不會識別type="javascript"
。 ( language="javascript"
已過時。)
style="width:200"
應該是200px
。
for (x = OptionList.length; x >= 0; x = x - 1) {
OptionList[x] = null;
}
不確定null
是否可以正常工作。 傳統的快速成語是:
OptionList.length= 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.