0

嗨,我写了一个小的 javascript 函数,我得到的错误是"Options is Null or not an object"

这是我的代码:

  function ValidateMarks(sender, args) {
        var ddlCategory = document.getElementById('ctl00_rightContainer_ContentTable2_ddlCategory').value;
        var ddlDisabilityClass = document.getElementById('ctl00_rightContainer_ContentTable2_ddlDisabilityClass').value;
        var GraduationPercntage = document.getElementById('ctl00_rightContainer_ContentTable2_txtGraduationPercntage').value;
        var objCVValidateMarks = document.getElementById("ctl00_rightContainer_cvValidateMarks");

        if ((ddlCategory.options[ddlCategory.selectedIndex].text == "-- Select Category --" || ddlCategory.options[ddlCategory.selectedIndex].text == "UR") && (ddlDisabilityClass.options[ddlDisabilityClass.selectedIndex].text == "No")) {
            if (parseFloat(GraduationPercntage) < parseFloat('49.50')) {
                objCVValidateMarks.errormessage = 'You are required 49.50% marks in B.Pharmacy to fulfill the eligibility.';
                args.IsValid = false;
            }
        }
        else {
            if (parseFloat(GraduationPercntage) < parseFloat('44.50')) {
                objCVValidateMarks.errormessage = 'You are required 44.50% marks in B.Pharmacy to fulfill the eligibility.';
                args.IsValid = false;
            }
        }
    }

当我检查 ddlcategory 的值时,它给了我选择的值,但ddlCategory.selectedIndex给了我值为 ' undefined' 因此我得到了上述错误。

4

2 回答 2

1

尝试更改 ddlCategory 从

var ddlCategory = document.getElementById('ctl00_rightContainer_ContentTable2_ddlCategory').value;

var ddlCategory = document.getElementById('ctl00_rightContainer_ContentTable2_ddlCategory');

现在尝试使用获取值ddlCategory.value并使用选择的索引ddlCategory.selectedIndex

于 2013-08-14T10:02:31.070 回答
0

有几件事:

看来您已在组件的 clientID 中硬编码。

是这样吗?如果是这样,请考虑使用以下任一:

http://msdn.microsoft.com/en-us/library/system.web.ui.clientidmode.aspx,这将允许您(在 .NET 4.5 中,使用 ClientIDMode="Static")拥有明智的永不更改的客户端 ID(但也让您冒着在页面上拥有多个具有相同 ID 的项目的风险)。

或这个:

document.getElementById("<%= MYELEMENT.ClientID %>")。

或者,如果使用单独的 javascript 文件,则将 clientID 作为参数传递到您的 javascript 函数中。

更具体地说,对于您的问题,javascript 似乎找不到 ddlCategory 或 ddlDisabilityClass,我想这两行之一失败并给您一个 null var:

var ddlCategory = document.getElementById('ctl00_rightContainer_ContentTable2_ddlCategory').value;
var ddlDisabilityClass = document.getElementById('ctl00_rightContainer_ContentTable2_ddlDisabilityClass').value;

发生这种情况时,最好使用 Alerts 调试 javascript,例如 Alert('Object was:'+ddlCategory); 如果找不到,这会给你一个 NULL ,或者具体告诉你该 var 设置为什么。

再看一遍,您的具体问题是您正在获取这些对象的值,而不是对对象本身的引用。从 getElementById 调用末尾删除 .value 应该可以解决此问题(只要您的引用有效)。

于 2013-08-14T10:08:07.680 回答