繁体   English   中英

“未捕获的类型错误:无法读取 null 的属性 'toString'”

[英]"Uncaught TypeError: Cannot read property 'toString' of null"

当我调试此代码时,我在 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 中调试器的屏幕截图在此处输入图片说明

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

function doDDItemSelected(event) {

这是因为该变量是调用getAttribute方法的结果,如果未设置,它将返回 null。 null不包含方法“toString”,因此正确引发了错误。

也许考虑做一个else if case 来检查值是否明确不为空。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM