【发布时间】:2016-08-10 21:15:33
【问题描述】:
这里的第一个堆栈溢出问题。我已经阅读了十几个关于类似问题的问题,但没有一个与我正在努力解决的问题完全匹配。 My Web App 是一个“教师成绩簿”,用于跟踪各种作业的分数。该视图显示了一个列出学生及其分数的大表。当用户单击“班级期间”按钮时,表格应更改以显示新班级期间的学生和分数。使用以下代码,输入字段不会更新:
$scope.changeClassPeriod = function(classPerIndex) {
$scope.currClassPer = classPerIndex;
var thisClassPeriod = $scope.classPeriods[$scope.currClassPer];
for (var i = 0; i < thisClassPeriod.assignments.length; i++) {
$("#head"+i).text(thisClassPeriod.assignments[i].assignmentName);
};
for (var i = 0; i < thisClassPeriod.students.length; i++) {
for (var j = 0; j < thisClassPeriod.assignments.length; j++) {
$($('#scoresheet')[0].rows[i+1].cells[j+2]).val(thisClassPeriod.students[i].scores[j]);
};
};
};
奇怪的是,当我使用“Text”命令而不是“Val”命令时,视图会更新,以便所有 td 都显示我期望的分数。缺点是,这种方法将所有输入字段更改为文本字段,因此用户无法再编辑它们。
$($('#scoresheet')[0].rows[i+1].cells[j+2]).text(thisClassPeriod.students[i].scores[j]);
在 Stack Overflow 上其他地方发布的类似问题中,其他一些帮助者提到每个输入字段都需要唯一的 id。这是特定于输入字段而不是文本字段的问题吗?
【问题讨论】:
-
始终需要唯一的 ID,对于页面上的所有元素,您不能有重复的 ID,jQuery 只会获取具有任何给定 ID 的第一个元素。第二个代码 sn -p 不可能工作,因为它是一个语法错误。
-
已编辑以修复语法错误。需要关闭“#scoresheet”周围的括号。 'text' 也可以改回 'val',下面有 Void 的回答。
标签: javascript jquery angularjs forms input