【发布时间】:2018-02-15 18:02:30
【问题描述】:
我有一个网站,它使用服务器生成的 JSON 对象来填充其内容。我想为仅在图像有描述时出现的图像实现可选的文本描述。我试图通过将 JSON 对象中包含的描述分配给一个字符串并检查该字符串是否等于“null”来做到这一点,但这不起作用。这是我的代码:
HTML:
<p id="image-description"></p>
JavaScript:
// Note: I'm not trying to populate the innerHTML of <p> with the content
// of `descriptionString` here
// At beginning of script:
var descriptionString = ''
// Inside function that populates website with content from JSON object:
parsedJSON = JSON.parse(this.responseText);
descriptionString = parsedJSON['activities'][0]['description'];
if (descriptionString != 'null') {
document.getElementById('image-description').style.display = 'block';
} else {
document.getElementById('image-description').style.display = 'none';
}
image-description 元素始终与此代码一起出现,即使 descriptionString 是 'null'。我还尝试使用 .style.visibility = 'visible'; 和 .style.visibility = 'hidden'; 以及将元素放在 div 中,但它们都产生了相同的结果。此外,当我使用 CSS 为 image-description 设置默认样式并尝试使用 JavaScript 对其进行修改时,它不会改变。
我已经确认来自parsedJSON 的字符串已正确分配给descriptionString(并在不存在字符串时分配'null')所以我一定做错了其他事情。
我还没有找到任何其他解决这个确切情况的答案,并且我试图不使用像 jQuery 这样的外部库。使用纯 JavaScript 解决此问题的最佳方法是什么?
【问题讨论】:
-
您是否 100% 确定 JSON 属性的值是
'null'而不是null?字符串值"null"和实际值null之间存在天壤之别。 -
包含您的 JSON 或代表性样本可能会很有帮助。
-
可以显示 JSON 文件吗?
-
我很确定该值是
'null'而不是null,原因有 3 个:1.) 当“null”分配给我的数据库中的条目的描述列时,它会出现被视为字符串,2.) 当我更改代码以检查descriptionString != 'a-different-string-from-the-database'是否发生相同的错误时,以及 3.) 当我构建一个接收来自服务器的完全相同的 JSON。 -
实际上,这里的评论者是对的:JSON 确实发送的是
null而不是'null'。我不认为是这种情况,因为当我最初尝试将响应视为null时遇到错误,但我才意识到错误是由其他原因引起的。我的代码现在可以工作了——谢谢!
标签: javascript html css json dom