繁体   English   中英

Javascript 错误:无法将 Object 转换为原始值

[英]Javascript Error: Cannot Convert Object to Primitive Value

我使用以下 javascript 代码收到此错误:

function tempTest(evt) {
    alert(evt.currentTarget.id);
    ct = document.getElementById(evt.currentTarget.id);
    rslt = document.getElementById('rslt');
    var props;
    for (var prop in ct) {
        if (ct.hasOwnProperty(prop)) {
            propVal = ct[prop];
            var propDat = prop + ' = ' + propVal;
            props += propDat + '<br/>';
        }
    }
    rslt.innerHTML = props;
}

这个让我很疑惑。 有任何想法吗?

并非 HTML 元素的所有属性都是原语。 例如,父、子等也是 HTML 元素。 您不能只将它们用作字符串或数字。
您需要在那里添加一个条件并相应地使用该属性。

(OP:)

只是想为任何偶然发现这篇文章的人发布更新的片段......

function tempTest(evt) {
    alert(evt.currentTarget.id);
    ct = document.getElementById(evt.currentTarget.id);
    rslt = document.getElementById('rslt');
    var props;
    for (var prop in ct) {
        if (ct.hasOwnProperty(prop)) {
            var propVal = ct[prop];
            props += prop + ' (' + typeof(prop) + ')' + ' = ';
            if (typeof(ct[prop]) == 'string') {
                propVal += ct[prop];
            } else {
                if (propVal != null && propVal.toString) {
                    props += propVal.toString();
                } else {}
            }
            props += '<br/>';
        }
    }
    rslt.innerHTML = props;
}

如果有问题的 object 是 json,您可以调用JSON.stringify(thingThatIsJson)将返回一个字符串。 .toString()不适用于 json。

这是给那些处理诸如req.body之类的消息的人的消息,它将在console.log()中工作,这相当令人困惑,因为它的行为可能不像 String (比如当你试图将它添加到另一个 String 时)。

问题在于代码的propVal部分。 因为那可能不会被转换成字符串。

暂无
暂无

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

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