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

时间:2011-07-12 15:59:59

标签: javascript object primitive

我使用以下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;
}

这让我感到困惑。有什么想法吗?

4 个答案:

答案 0 :(得分:7)

并非HTML元素的所有属性都是基元。例如,parent,childs等也是HTML元素。你不能只把它们用作字符串或数字 您需要添加条件并相应地使用该属性。

答案 1 :(得分:1)

(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;
}

答案 2 :(得分:1)

如果有问题的对象是json,你可以调用JSON.stringify(thingThatIsJson)来返回一个字符串。 .toString()对json不起作用。

对于那些处理类似req.body的人来说,这是一个消息,它会在console.log()中起作用,这是相当混乱的,因为它可能不像一个字符串(就像你在尝试将它添加到另一个String)。

答案 3 :(得分:0)

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