开发者问题收集

使用 object.keys 和 foreach 通过 id 获取文档元素来显示数据时出错

2018-12-03
76

目前,我正在尝试让我的 js 脚本显示对象 udata 中的数据。

我一直收到错误:

Uncaught TypeError: Cannot read property 'innerHTML' of null.

我已经使用字符串 ( var str = 'test' ) 进行了测试,并且没有出现错误,但是一旦我切换到使用 itemValue 作为要检查的 id,我就会收到错误。我尝试使用 .toString() 将键设为字符串,但这也不起作用。 不知道该怎么做。 != null 语句应使 foreach 避免在少数情况下对象键不打算与 html 中的 id 相对应时执行空操作。

我将不胜感激任何帮助!

if(localStorage.udata != null){
    var udata = JSON.parse(localStorage.getItem('udata'));

    Object.keys(udata).forEach(function (itemValue) {
        if(document.getElementById(itemValue).innerHTML != null)
            document.getElementById(itemValue).innerHTML = udata[itemValue];
    });
2个回答

您的检查实际上导致了错误。您必须检查

 document.getElementById(itemValue)

是否为 null ,尝试访问 .innerHTML 会导致错误。

Jonas Wilms
2018-12-03

The != null statement should make the foreach avoid the null operations in the few cases the object key is not intended to correspond to an id in the html.

这是不正确的。如果 ID 为 itemValue 的元素不存在,则 document.getElementById(itemValue) 将为 null ,因此尝试在该 null 值上使用 .innerHTML 是导致错误的原因。您需要检查 document.getElementById(itemValue) != null

Herohtar
2018-12-03