Ошибка JavaScript: невозможно преобразовать объект в примитивное значение - PullRequest
7 голосов
/ 12 июля 2011

Я получаю эту ошибку, используя следующий код 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 ]

7 голосов
/ 12 июля 2011

Не все свойства элемента HTML являются примитивами. например, parent, childs и т. д. также являются элементами HTML. Вы не можете просто использовать их как строки или числа.
Вам нужно добавить туда условие и соответственно использовать это свойство.

2 голосов
/ 01 декабря 2016

(ОП:)

Просто хотел опубликовать обновленный фрагмент для всех, кто наткнулся на это сообщение ...

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;
}
1 голос
/ 25 мая 2017

Если рассматриваемым объектом является json, вы можете вызвать JSON.stringify(thingThatIsJson), который вернет String..toString() не работает на json.

Это сообщение для тех из вас, кто имеет дело с чем-то вроде req.body, которое будет работать в console.log(), что довольно запутанно, поскольку в противном случае оно может вести себя как строка(например, когда вы пытаетесь добавить его в другую строку).

0 голосов
/ 12 июля 2011

Проблема связана с частью propVal вашего кода.Поскольку это не может быть преобразовано в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...