Firefox与Chrome最新版本中JavaScript onclick表单调用报错问题
解决
document.thisJSP is undefined的表单访问问题 这个报错是因为现代浏览器(比如最新版Firefox和Chrome)已经不再支持通过document.表单名称这种旧方式直接访问表单了——早期浏览器会自动把表单的name属性作为document的全局属性,但现在这种行为不符合标准,被移除了,所以会提示undefined。
给你几个可靠的解决方案,按推荐程度排序:
方案1:使用document.forms集合访问表单(最推荐)
这是符合DOM标准的访问方式,兼容性覆盖所有现代浏览器,也支持旧版。你只需要把原来的代码里的document.thisJSP替换成document.forms['thisJSP']就行:
onclick="javascript:selectAllCheckBox(this, document.forms['thisJSP'].chkUser);"
或者也可以用点语法:
onclick="javascript:selectAllCheckBox(this, document.forms.thisJSP.chkUser);"
方案2:给表单添加id属性,用getElementById获取
给你的表单加上id属性(和name保持一致也可以):
<form action="AjaxRightsMenu.jsp" name="thisJSP" id="thisJSP" method="POST"> <!-- 表单原有内容 --> </form>
然后修改onclick代码:
onclick="javascript:selectAllCheckBox(this, document.getElementById('thisJSP').chkUser);"
方案3:用querySelector定位表单
如果你不想修改HTML结构,也可以用CSS选择器直接选中表单:
onclick="javascript:selectAllCheckBox(this, document.querySelector('form[name=\"thisJSP\"]').chkUser);"
不过这种方式要确保页面中只有一个名为thisJSP的表单,避免选择错误。
额外提示
如果你的chkUser是一组同名复选框(而非单个),建议用表单的elements集合来获取所有匹配项,避免只拿到第一个复选框:
document.forms['thisJSP'].elements['chkUser']
内容的提问来源于stack exchange,提问作者NJM
相关产品推荐
相关产品推荐

