发布
社区首页 >问答首页 >Javascript未正确检测div是否为空

Javascript未正确检测div是否为空
EN

Stack Overflow用户
提问于 2019-11-07 08:30:12
回答 1查看 44关注 0票数 0

我正在使用Americommerce,他们什么都使用widget,我有一个widget,可以显示用户最近查看的产品,但当他们还没有查看任何东西时,这个位置就是空的。

我想显示一条消息。我遇到的问题是检测小部件是否为空。我试着用div(#cond)包装这个小部件,但是没有用,我试着用JavaScript检查ul.side_carousel类是否存在,以及div#cond中是否有任何内容。无论我做什么,我都不能让它正常工作。

下面的脚本是我得到的最接近的脚本。当我再次访问网站时,div会显示脚本中的“no Items to Display”消息,但是如果我点击一个产品,然后返回主页,div不再是空的,它显示的是最近查看过的产品(这很好!),但它也显示了“no Items to Display”消息(这很糟糕),我不知道为什么它会出现,因为div不再是空的。

代码语言:javascript
代码运行次数:0
复制
<div class="col-sm-2 side hidden-xs hidden-sm">      
    <h3>Recently Viewed:</h3>
    <div id="cond">
      <ac:widget id="CAROUSEL23626" type="Carousel" scrollby="4" displayorientation="Vertical" enablemergecode="True" categoryid="293" repeatabletype="RecentlyViewedItems" rotatorstartdate="10/23/2019" productlistid="9" displaycount="8">
        <ac:visibilityarea id="dvControl">
          ##INCLUDESTYLESHEET[/store/inc/bxslider/jquery.bxslider.css]##

          <ac:layoutarea id="Layout">              
            <ul class="side-carousel">$$GROUP$$</ul>             
          </ac:layoutarea>

          <ac:layoutarea id="Group">
            $$ITEM$$
          </ac:layoutarea>

          <ac:layoutarea id="Item">
            <li>
              <!--$$PRODUCTNAME$$-->

              $$PHOTOWITHLINK$$
              <div class="FeaturedItemsRating">$$OVERALLRATING$$</div>
              <div class="saleprice">$$PRICE$$</div>
            </li>
          </ac:layoutarea>


          <ac:layoutarea id="Script">
            <script>
              $(function () {
                $("$$SELECTOR$$ ul").bxSlider({
                  minSlides: 4,
                  maxSlides: $$VISIBLESLIDES$$,
                  moveSlides: $$SCROLLBY$$,
                  mode: '$$ORIENTATION$$',
                  slideWidth: $$WIDTH$$,
                  slideMargin: 10
                });
              });
            </script>

          </ac:layoutarea>

          ##INCLUDESCRIPTBOTTOM[/store/inc/bxslider/jquery.bxslider.js]##
        </ac:visibilityarea>
      </ac:widget>


    </div>
     <script>
      var bond_div = document.getElementById("CAROUSEL23626");
      var cond_div = document.getElementById("cond");
      if (bond_div === null) {
        cond_div.innerHTML = "<H3>No Items to Display</H3>";
      }  
    </script>
    $$CAROUSEL23626$$
  </div>  
EN

回答 1

Stack Overflow用户

发布于 2019-11-07 08:34:11

只有当bond_div根本不存在时,div才会是null。如果你想检查它是否为空,你需要测试它的innerText

代码语言:javascript
代码运行次数:0
复制
if (bond_div.innerText.trim() == "") {
  cond_div.innerHTML = "<h3>No Items to Display</h3>";
}

我使用innerText而不是innerHTML,因为它看起来里面有很多HTML标签。

.trim()删除了值周围的所有空格,这些空格是由于HTML标记周围的所有空格和换行符而存在的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58740339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档