我在 ASP/VBScript 中创建了一个动态表,它从记录集中填充一个表。使用 DO LOOP 为每个新的 EmployeeID 创建一个新行。下拉列表有 2 个选项:“签入”和“签出”。如果选择“签入”,则评论框将保持禁用状态,如果选择“签出”项,则将启用评论框;选择时,这两个选项都会生成一个日期。
问题是下拉列表仅适用于第一行。
我知道我需要重写代码,以便每次有新行时它都会调用test()函数。
那么有什么方法可以克隆函数并让它为每一行执行吗?我已经尝试通过在 ID 名称中添加 rowCount 来使函数名称和 ID 动态化(例如:“id="TestCmt<%=rowTest%>)
也许有人可以指出我正确的方向?我已经花了几个小时在这上面,我想自己弄清楚(有点):)
这是一些代码:
<html xmlns:ntb>
<head>
<script language="javascript" type="text/javascript">
function enable() {
document.getElementById("TestCmt").readOnly = false;
document.getElementById("TestCmt").style.backgroundColor = "#FFFFFF";
document.getElementById("TestCmt").innerHTML = "";
document.getElementById("TestCmt").style.color = "#000000";
}
function disable() {
document.getElementById("TestCmt").readOnly = true;
document.getElementById("TestCmt").style.backgroundColor = "#DCDCDC";
document.getElementById("TestCmt").innerHTML = "";
}
function test() {
<% if (StoreID > 0) AND (rsTest.bof=FALSE) then %> //Make sure there are employees
var selectMenuT = document.getElementById("TestStatus");
selectMenuT.onchange = function () {
var chosenOptionT = parseInt(this.options[this.selectedIndex].value);
var textDateT = document.getElementById("TestDate");
var cmtsT = document.getElementById("TestCmt");
switch (chosenOptionL) {
case 0:
disable();
textDateT.innerHTML = "";
cmtsT.innerHTML = <%=rsTest("TestCmt")%>
break;
case 1:
disable();
var approve = getReviewDate(); //excluded this function from here but it works fine
textDateT.innerHTML = approve;
break;
case 2:
enable();
var reject = getReviewDate();
textDateL.innerHTML = reject;
break;
}
}
<% end if %>
}
</script>
</head>
<body>
<% if (StoreID > 0) and rsTest.BOF=FALSE then %>
<span class="header">Test Playground - Store# <%=rsStore("StoreNo")%></span>
<table class="table" name="StoreTable" cellpadding="1" cellspacing="0">
<tr>
<td class="TestHeader">Store No.</td>
<td class="TestHeader">Check-In Status</td>
<td class="TestHeader">Date</td>
<td class="TestHeader">Comments</td>
</tr>
<%
dim i3, iStr3
dim rowTest
rowTest = 0
do until rsTest.EOF
i3=clng(rsTest("EmployeeID"))
iStr3=right("000"+cstr(i3),4)
rowTest = rowTest + 1
%>
<tr>
<!-- Store No.-->
<td>
<% if StoreID > 0 then %>
<label id="TestRN<%=rowTest%>"></label>
</td>
<!-- Check-In Status-->
<td class="TestData" valign="top">
<select id="TestStatus<%=rowTest%>" style="width:100%" **onchange="test()"**>
<option value="0"><Select one></option>
<option value="1">Check-In</option>
<option value="2">Check-Out</option>
</select>
</td>
<!--Date-->
<td valign="top">
<input type="hidden" name="Sequence<%=iStr3%>" id="Sequence<%=iStr3%>">
<label ID="TestDate<%=rowTest%>" class="TestData"><%=rowTest%></label>
</td>
<!--Comments-->
<td valign="middle">
<textarea id="TestCmt<%=rowTest%>" rows="2" style="textarea" ReadOnly ></textarea>
</td>
<% end if %>
</tr>
<%
rsTest.MoveNext
loop
%>
</table>
<% end if %>
</body>
</html>
任何帮助表示赞赏。
签名:学习菜鸟