次の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;
}
問題のオブジェクトがjsonの場合、JSON.stringify(thingThatIsJson)
を呼び出すと、文字列が返されます。 .toString()
はjsonでは機能しません。
これは、console.log()
で機能するreq.body
のようなものを扱っている人へのメッセージです。これは、他の方法では文字列のように動作しない可能性があるため、かなり混乱します(追加しようとしているときなど)。別の文字列に)。
問題は、コードのpropVal
部分にあります。それは文字列に変換されないかもしれないので。