如果字符串为null,如何隐藏元素或div?

时间:2018-02-15 18:02:31

标签: javascript html css json dom

我有一个网站,它使用服务器生成的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解决此问题的最佳方法是什么?

4 个答案:

答案 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用于表示缺少某些值。

&#13;
&#13;
'null'
&#13;
descriptionString = null;
if (descriptionString != null) {
    document.getElementById('image-description').style.display = 'block';
} else {
    document.getElementById('image-description').style.display = 'none';
}
&#13;
&#13;
&#13;

<强>&#39;空&#39; : <div id="image-description"> Image </div>代表JavaScript中的字符串。

&#13;
&#13;
''
&#13;
descriptionString = 'null';
if (descriptionString != null) {
    document.getElementById('image-description').style.display = 'block';
} else {
    document.getElementById('image-description').style.display = 'none';
}
&#13;
&#13;
&#13;