现在我的问题有点奇怪了。我的JS文件中有一个循环,该循环遍历表元素,并应该使用数组中的值更新输入字段。
var array = list.replace("[","").replace("]","").split(",");
//9c9bd0f3-9499-4cdc-beaf-3c4d62d3b5a7, 80.0, 15334f50-43eb-46b0-8f7d-1d9011f8b3b5, 20.0
if (array.length > 1) {
var table = document.getElementById('table');
for (var r = 1, n = table.rows.length; r < n; r++) {
//skip first row as that's the head
//table has 3 rows including head
var a = table.rows[r];
var markerId = a.getElementsByTagName("label")[1].id;
//loop 1: 15334f50-43eb-46b0-8f7d-1d9011f8b3b5
//loop 2: 9c9bd0f3-9499-4cdc-beaf-3c4d62d3b5a7
var id = array.indexOf(markerId);
//loop 1: -1
//loop 2: 0
a.getElementsByTagName("input")[0].value = Number(array[(id+1)]);
}
}
我的问题是,即使“ markerId”值在数组中,第一个循环也返回-1。
编辑1:列表变量来自显示页面之前的context.put方法,列表= [9c9bd0f3-9499-4cdc-beaf-3c4d62d3b5a7,80.0,15334f50-43eb-46b0-8f7d-1d9011f8b3b5,20.0] < / p>
编辑2:这是创建和设置列表值的后端代码。
public void doEdit_assignment(RunData data) {
SessionState state = ((JetspeedRunData) data).getPortletSessionState(((JetspeedRunData) data).getJs_peid());
ParameterParser params = data.getParameters();
String assignmentId = StringUtils.trimToNull(params.getString("assignmentId"));
Assignment a = getAssignment(assignmentId, "doEdit_assignment", state);
Set<AssignmentMarker> markers = assignmentService.getMarkers(a);
List<String> quotas = new ArrayList<String>();
for (AssignmentMarker marker : markers) {
quotas.add(marker.getMarkerUserId());
quotas.add(marker.getQuotaPercentage().toString());
//add reassign marker select option here
}
state.setAttribute(ASSIGNMENT_QUOTA_VALUES, quotas);
setAssignmentSupplementItemInState(state, a);
}
我不能给你更多。事实是,值位于数组中,该数组在第二次迭代中起作用,但由于某种原因而不是第一次迭代。
答案 0 :(得分:1)
由于尚未提供标记,因此代码中的Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strConn As String
Dim ODBCTableName as String
Dim AccessTableName as String
Set db = CurrentDb()
ODBCTableName = "dbo.YourTable"
AccessTableName = "YourTable"
strConn = "ODBC;Driver={SQL Server};Server=YOURSERVER\SQLINSTANCE;Database=MYDATABASE;Trusted_Connection=No;UID=MyUserName;PWD=MyPassword"
db.TableDefs.Refresh
For Each tdf In db.TableDefs
If tdf.Name = AccessTableName Then
db.TableDefs.Delete tdf.Name
Exit For
End If
Next tdf
Set tdf = db.CreateTableDef(AccessTableName)
'===============================
'If your connection string includes a password
'and you want the password to be saved, include the following 3 lines of code
'to specify the dbAttachSavePWD attribute of the TableDef being created
'If you don't want to save the password, you would omit these 3 lines of code
'===============================
If InStr(strConn, "PWD=") Then
tdf.Attributes = dbAttachSavePWD
End If
tdf.SourceTableName = ODBCTableName
tdf.Connect = strConn
db.TableDefs.Append tdf
未定义。而且我将假设table
是一个字符串,即使没有引号也是如此。
所以
list
所以,这意味着数组显示为..
var list = '[9c9bd0f3-9499-4cdc-beaf-3c4d62d3b5a7, 80.0, 15334f50-43eb-46b0-8f7d-1d9011f8b3b5, 20.0]'
var array = list.replace("[","").replace("]","").split(",");
您的问题可能是双引号后的多余空格,因此您的后端代码都应输出[
"9c9bd0f3-9499-4cdc-beaf-3c4d62d3b5a7",
" 80.0",
" 15334f50-43eb-46b0-8f7d-1d9011f8b3b5",
" 20.0"
]
,而无需多余空格,例如..
list
或者,您应该将Javascript代码更改为此。.
var list = '[9c9bd0f3-9499-4cdc-beaf-3c4d62d3b5a7,80.0,15334f50-43eb-46b0-8f7d-1d9011f8b3b5,20.0]'
// Notice, no spaces between commas.