我有一个带有onchange事件的下拉框。当我在下拉列表中选择一个值时,我调用一个接受一些参数的JavaScript函数,然后将值提交给我的控制器。这是下拉框中的内容:
<td><select class="input-medium" name="status" id="status" onchange="javascript:changeStatus(this.value, ${module.id}, ${module.status});">
<option <c:if test='${module.status == "Active"}'>selected="selected"</c:if> value="active">Active</option>
<option <c:if test='${module.status == "Inactive"}'>selected="selected"</c:if> value="inactive">Inactive</option>
<option <c:if test='${module.status == "Retired"}'>selected="selected"</c:if> value="retired">Retired</option>
</select></td>
这是我的JavaScript函数:
<script type="text/javascript">
function changeStatus(dropboxStat, modID, curStat) {
alert (dropboxStat);
if (curStat.toString == "Active" && dropboxStat == "inactive")
alert ("This will delete all of the module's training entries that have not been completed!");
document.updateForm.status.value = dropboxStat;
document.updateForm.modID.value = modID;
document.updateForm.submit();
}
</script>
当我将状态为“active”的行更改为“inactive”时,if语句应该读为true并且应该弹出警报。现在我甚至没有得到弹出的第一个警报。相反,我得到了这个错误:
ReferenceError: Active is not defined
我在网上读过有关未定义的变量但这只是一个字符串值...我认为不需要定义。关于为什么会抛出这个错误的任何想法和解释?
答案 0 :(得分:3)
您的onchange正在呈现为
changeStatus(this.value, 123, Active)
因此它将Active
视为变量而不是字符串。因此错误。
您需要在参数周围添加缺少的引号
<td><select class="input-medium" name="status" id="status" onchange="javascript:changeStatus(this.value, '${module.id}', '${module.status}');">