【问题标题】:Javascript TypeError: undefined is not an objectJavascript TypeError:未定义不是对象
【发布时间】:2021-06-11 17:49:07
【问题描述】:

使用一些 Javascript 脚本出现此错误:TypeError: undefined is not an object (evalating 'results[j].distance.text')

尝试按照其他帖子中的建议添加“var results = []”,但没有帮助。

function CalculatedRecommededDistance() {

event.preventDefault();

var origin = document.getElementById('pick_up_address').value;
var destination = document.getElementById('drop_off_address').value;
var geocoder = new google.maps.Geocoder();
var service = new google.maps.DistanceMatrixService();

var results = [];


service.getDistanceMatrix({
origins: [origin],
destinations: [destination],
travelMode: 'DRIVING',
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false,
avoidFerries: false

}, function(response, status) {
var originList = response.originAddresses;
var destinationList = response.destinationAddresses;
var outputDiv = document.getElementById('outputRecommended');
outputDiv.innerHTML = '';

//Display distance recommended value
for (var i = 0; i < originList.length; i++) {
  var results = response.rows[i].elements;
  for (var j = 0; j < results.length; j++) {
    outputDiv.innerHTML += results[j].distance.text + ' in ' +
      results[j].duration.text + '<br>';
  }
}
});
}

【问题讨论】:

  • 可能意味着:results[j].distance 未定义。 console.log(results) 在循环中,看看你是否得到了你所期望的。或循环前的响应。注意:var results = []; 对代码没有影响。
  • var results = response.rows[i].elements; 下尝试console.log(results) 看看你在变量results 里面有什么
  • 您正在使用两个结果变量。一个在函数中,另一个在 for 循环中。如果有帮助,请尝试使用其他变量。

标签: javascript undefined typeerror


【解决方案1】:

Javascript TypeError: undefined is not an object 这意味着您正在尝试将undefined 值视为Object。 (简单来说:试图从undefined值中获取数据)

您可以使用? 安全地忽略此错误。如results[j]?.distance?.text。但这不是受赠者,您将获得预期的结果。因此,首先console.log(result) 并查看预期对象在该输出中。

【讨论】:

  • 非常感谢。添加“?”可以消除错误。不过,从您的 cmets 那里得到的感觉只是在掩盖根本问题。我从 console.log (结果)中得到以下信息——无论是放在有问题的代码行之前还是之后:[Log] [{distance: {text: "639 km", value: 638918}, duration: {text: "7 小时 41 分钟",值:27676},状态:"OK"}] (1)
【解决方案2】:

在你得到它之前检查你的结果是否有距离和持续时间属性:

function CalculatedRecommededDistance() {

event.preventDefault();

var origin = document.getElementById('pick_up_address').value;
var destination = document.getElementById('drop_off_address').value;
var geocoder = new google.maps.Geocoder();
var service = new google.maps.DistanceMatrixService();

var results = [];


service.getDistanceMatrix({
origins: [origin],
destinations: [destination],
travelMode: 'DRIVING',
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false,
avoidFerries: false

}, function(response, status) {
var originList = response.originAddresses;
var destinationList = response.destinationAddresses;
var outputDiv = document.getElementById('outputRecommended');
outputDiv.innerHTML = '';

//Display distance recommended value
for (var i = 0; i < originList.length; i++) {
  var results = response.rows[i].elements;
  for (var j = 0; j < results.length; j++) {
   if (result[j].hasownproperty("distance") && result[j].hasownproperty("duartion")){
    outputDiv.innerHTML += results[j].distance.text + ' in ' +
      results[j].duration.text + '<br>';
  }
}
}
});
}

【讨论】:

    猜你喜欢
    • 2014-07-12
    • 2018-12-21
    • 2021-12-17
    • 2021-12-01
    • 2019-11-16
    • 2020-02-09
    • 2019-12-07
    • 2022-01-01
    • 2019-01-20
    相关资源
    最近更新 更多