我有一个网站,它使用服务器生成的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解决此问题的最佳方法是什么?
答案 0 :(得分:1)
您在比较中缺少一个=,并且还删除了引号(除非您与字符串进行比较)。
if (descriptionString !== null)
答案 1 :(得分:0)
试试这个
if (!descriptionString.trim()||descriptionString.trim().length == 0) {
document.getElementById('image-
description').style.display = 'none';
}
else
{
document.getElementById('image-description').style.display = 'block';
}
记住字符串值“null”和普通空值不相同。在调试时要记住这个区别
答案 2 :(得分:0)
你的代码中有错误。只是在descrition中错过了分号并检查元素是否为空或将变量初始化为null。以下是要证明的片段
var descriptionString = '';
// Inside function that populates website with content from JSON object:
parsedJSON = JSON.parse(this.responseText);
descriptionString = parsedJSON['activities'][0]['description'];
if (descriptionString != '') {
document.getElementById('image-description').style.display = 'block';
} else {
document.getElementById('image-description').style.display = 'none';
}
在JavaScript中,null是“无”。它应该是那样的东西 不存在。
不幸的是,在JavaScript中,null的数据类型是一个对象。
你可以认为它是JavaScript中的一个错误,typeof null是一个对象。 它应该为空。
正确的一个:
<p>An empty string has both a legal value and a type:</p>
<p id="demo"></p>
<script>
var car = null;
if(car ==null)
document.getElementById("demo").innerHTML ="The value is: " +car + "<br>" +"The type is: " + typeof car;
</script>
错误的一个:
<p>An empty string has both a legal value and a type:</p>
<p id="demo"></p>
<script>
var car = '';
if(car ==null)
document.getElementById("demo").innerHTML ="The value is: " +car + "<br>" +"The type is: " + typeof car;
</script>
答案 3 :(得分:0)
首先尝试了解tblabc2 -> \
joiner 1 ----------------------------------------------------?
tblabc -> / |
| / -> aggregator for amt1
joiner2 --> router < -> aggregator for amt2
view1 -> / \ -> aggregator for amt3
\-> aggregator for amt4
view2???
&amp; null
。
null: null用于表示缺少某些值。
'null'
&#13;
descriptionString = null;
if (descriptionString != null) {
document.getElementById('image-description').style.display = 'block';
} else {
document.getElementById('image-description').style.display = 'none';
}
&#13;
<强>&#39;空&#39; : <div id="image-description">
Image
</div>
代表JavaScript中的字符串。
''
&#13;
descriptionString = 'null';
if (descriptionString != null) {
document.getElementById('image-description').style.display = 'block';
} else {
document.getElementById('image-description').style.display = 'none';
}
&#13;