String函数中没有定义String?

时间:2015-02-11 14:47:48

标签: javascript html

我有一个带有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

我在网上读过有关未定义的变量但这只是一个字符串值...我认为不需要定义。关于为什么会抛出这个错误的任何想法和解释?

1 个答案:

答案 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}');">