【问题标题】:Why does my function sometimes not execute the document.body.innerHTML command?为什么我的函数有时不执行 document.body.innerHTML 命令?
【发布时间】:2013-09-02 00:43:05
【问题描述】:

我制作了一个函数,可以使用 Google API 从 Google 地图输出数据。调用该函数以从一组位置输出。

问题是有时它不会输出最后一个 document.body.innerHTML 部分,该部分会输出该地点的 URL。如果我删除输出该地点的评论方面的 for 循环,则始终显示 URL。

function printme(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
  document.body.innerHTML += ('<br />'+ place.name + ' R: '+ place.rating);

  for (var i = 0, reviews; reviews = place.reviews[i]; i++) {

    for (var x = 0, aspectr; aspectr = reviews.aspects[x]; x++) {
      document.body.innerHTML += ('<br />'+'Aspect: ' + aspectr.type + ' ' + aspectr.rating);
    }

}

  document.body.innerHTML += ('<br />'+ '<a href = '+place.url+'>'+place.url+'</a>'+'<br />'); 
  }

  else {
    alert(status);
  }
}

我不明白为什么会这样。

【问题讨论】:

  • 啊,我想我找到了问题所在。可能是当 places.reviews 数组中没有任何内容时它会崩溃。如何制作 if 语句以仅在 places.reviews 中有内容时运行代码? 0){}> 不起作用。
  • 啊,没关系,我想通了。我使用了以下内容,它很有魅力: if (typeof place.reviews !== 'undefined'){...rest of code...}
  • reviews = place.reviews[i] - reviews 是用于此变量的错误名称。您应该将此变量称为review,而不是reviews,因为它是单个评论:review = place.reviews[i]
  • 您也会发现learn how to use the JavaScript debugger 非常有帮助。它将帮助您查明此类问题、尝试不同的表达式、查看变量等。

标签: javascript


【解决方案1】:

我将以下 if 语句包裹在代码周围,现在可以找到它:

if (typeof place.reviews !== 'undefined'){

【讨论】:

  • 您可以将其简化为if( place.reviews ) { ... }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多