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

0

いくつかのこと:

コンポーネントの clientID をハードコーディングしたようです。

これは事実ですか?その場合は、次のいずれかを使用することを検討してください。

http://msdn.microsoft.com/en-us/library/system.web.ui.clientidmode.aspx。これにより、(.NET 4.5 では ClientIDMode="Static" を使用して) 決して変更されない適切な clientID (ページに同じ ID のアイテムが複数存在するリスクもあります)。

またはこれ:

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

または、別の JavaScript ファイルを使用している場合は、clientID をパラメータとして JavaScript 関数に渡します。

より具体的には、javascript が ddlCategory または ddlDisabilityClass を見つけられないようです。これらの 2 つの行のいずれかが失敗し、null var が返されていると思います。

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

これが発生した場合は、Alert('Object was:'+ddlCategory); のように、アラートを使用して JavaScript をデバッグすることをお勧めします。これにより、見つからない場合は NULL が返されます。または、var が何に設定されているかが具体的に示されます。

これをもう一度見てみると、特定の問題は、オブジェクト自体への参照ではなく、これらのオブジェクトの値を取得していることです。getElementById 呼び出しの最後から .value を削除すると、これが修正されます (参照が有効である限り)。

于 2013-08-14T10:08:07.680 に答える