【发布时间】:2015-07-16 20:25:08
【问题描述】:
这是我的 Javascript 函数:
function deleteAlert(tabstate){
var form = window.document.alertsForm;
var numOfElements = form.elements.length;
var okDelete = "false";
for (i=0; i < numOfElements; i++)
{
if(form.elements[i].checked)
{
okDelete = "true";
break;
}else{
okDelete = "false";
}
}
if(okDelete == "true")
{
//changPage("Screen1b.html"); only for prototype
form.action="/cpi/producer/myAlerts/alertsGateway?jadeAction=MA06&tab="+tabstate;
form.document.getElementById('deleteAlertsButton').disabled=true;
form.submit();
}else{
alert("Please select one or more items to delete.");
}
}
我在两个 jsps 中调用这个函数,代码 sn-p 是相同的(注意相同的 id 值)
<input type=button value="Delete" id="deleteAlertsButton" title="Delete" class=fbutton onclick="javascript:deleteAlert('<%=state %>');">
现在这适用于 IE8 中的两个 jsp,但在 chrome 中,它会为第二个 jsp 提供错误: 未捕获的类型错误:无法读取未定义的属性“getElementById”
请帮忙。
【问题讨论】:
-
我认为您对 form.document 的引用不正确。 “文档”在表单之外。
-
为什么不使用 window.document.getElementById('deleteAlertsButton')...
-
我怀疑这可能与您将布尔值用作字符串有关。布尔值
true与字符串值"true"不同;同样false不等于"false"。您还使用松散的相等运算符==进行比较,但您应该使用严格的身份运算符===代替。这可能会导致意想不到的结果。