“未捕获的TypeError:无法读取null的属性'toString'”

时间:2020-02-21 19:11:44

标签: javascript if-statement

调试该代码时,在if语句的“ else”部分收到此错误。我对Java脚本不是很熟悉,所以任何帮助都会很棒:)

function doDDItemSelected() {
    var oSrc = event.srcElement
    var oCrit
    var oCritB
    var lstListItems
    var iCritPK = oSrc.getAttribute('CRIT_PK')
    oSrc.style.visibility = "hidden";
    oSrc.style.display = "none";

    if (oSrc.id.indexOf("lstCritB") != -1) {
        oCrit = $get('CritB' + iCritPK.toString());
        oCrit.value = oSrc.options[oSrc.selectedIndex].text;
    } else {
        oCrit = $get('Crit' + iCritPK.toString()); // error is in this line
        oCrit.value = oSrc.options[oSrc.selectedIndex].text;
        if (oCrit.onchange) {
            oCrit.onchange();
        }

        // Set the value of the end of range field if there is one
        try {
            oCritB = $get('CritB' + iCritPK.toString());
            if (oCritB.value == "") {
                if (oSrc.options[oSrc.selectedIndex].value != "(ALL)") {
                    oCritB.value = oSrc.options[oSrc.selectedIndex].text;
                }
            }
        } catch (e) {
            return;
        }
    }
}

编辑:我应该补充一点,此功能用于Web浏览器的下拉列表框中。问题是我无法在下拉框中选择项目,而使所选项目显示在同一框中。此代码在IE11中有效,但在Google Chrome中不可用。

编辑2:这是Google chrome中的调试器的屏幕截图 enter image description here

2 个答案:

答案 0 :(得分:0)

嗨,尝试将事件作为参数传递

function doDDItemSelected(event) {

答案 1 :(得分:-1)

之所以这样做,是因为该变量是对方法getAttribute的调用的结果,如果未设置该方法,则将返回null。 null不包含方法'toString',因此正确引发了错误。

也许考虑做一个else if事例,以检查该值是否明确不为空。

... 
}
else if ( iCritPK !== null ) { 
...