HTML问题中的Javascript-延迟和更新
虽然我是一名经验丰富的程序员,但我对使用HTML/Javascript很在行。我已经在下面发布了我的代码。我想做但一直未能做到的是:HTML问题中的Javascript-延迟和更新,javascript,html,Javascript,Html,虽然我是一名经验丰富的程序员,但我对使用HTML/Javascript很在行。我已经在下面发布了我的代码。我想做但一直未能做到的是: 延迟执行refreshmap()(例如延迟500毫秒)。我输入了setTimeout函数,但它似乎没有延迟任何东西,即使是大值 获得正确的输出。目前,距离和持续时间在for循环每次迭代后的打印结果中都会更新,但纬度/经度数据永远不会更新(请参阅随附的输出) Html部分: <!DOCTYPE html> <html> <head
- 延迟执行
(例如延迟500毫秒)。我输入了refreshmap()
函数,但它似乎没有延迟任何东西,即使是大值setTimeout
- 获得正确的输出。目前,
和距离
在for循环每次迭代后的打印结果中都会更新,但纬度/经度数据永远不会更新(请参阅随附的输出)持续时间
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Driving Distances and Times dataset creator</title>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=false"></script>
</head>
<body style="font-family: Arial; font-size: 13px; color: red;white-space:pre-wrap;">
<form action="#" onsubmit="setRequest(); return false;" style="white-space:normal;">
<p>
Origin:
<input type="text" name="address1" value="Chicago" />
</p>
<p>
Latitude 1:
<input type="number" name="beginLat" value="35" />
Longitude 1:
<input type="number" name="beginLong" value="-80" />
</p>
<p>
Latitude 2:
<input type="number" name="endLat" value="40" />
Longitude 2:
<input type="number" name="endLong" value="-90" />
</p>
<p>
Divisions per side:
<input type="number" name="divisions" value="1" />
<input type="submit" value="Search" />
</p>
</form>
<p id="results"></p>
<div id="map" style="width: 400px; height: 300px;"></div>
提前感谢您提供的有用提示
在这里陷入困境之后,我尝试了另一种方法,让javascript只查找一个位置,通过python脚本中设置的url参数提供给它。这样,我知道输出将是唯一的,我可以延迟所有我想要的。我在读取更新页面的输出时遇到了这种情况。即使使用ghost.py和
标记,我也无法获取更新的信息。这仍然是一条更好的途径吗?我想遵守TOS,每次都显示地图
setTimeout(refreshmap(),500);
这里直接调用函数,并将调用结果传递给setTimeout()
。相反,您需要将函数传递给setTimeout。像这样:
setTimeout(refreshmap, 500);
对于不熟悉函数式语言的人来说,这可能有点陌生
您可以查看以获得进一步的澄清
这里直接调用函数,并将调用结果传递给setTimeout()
。相反,您需要将函数传递给setTimeout。像这样:
setTimeout(refreshmap, 500);
对于不熟悉函数式语言的人来说,这可能有点陌生
您可以查看以获得进一步的说明。好的,发生的情况是它延迟了呼叫,然后使用最后一组纬度和经度。这是因为您使用的是全局变量,并且变量在实际调用
refreshMap
之前发生了变化
您应该做的是将设置超时(refreshmap(),500)
行更改为:
setTimeout(function() {
refreshmap(latitude, longitude);
}, 500);
然后将refreshmap
函数更改为如下内容:
function refreshmap(latitude, longitude){...}
您可能还需要包括其他变量。好的,现在的情况是它延迟了调用,然后使用最后一组纬度和经度。这是因为您使用的是全局变量,并且变量在实际调用
refreshMap
之前发生了变化
您应该做的是将设置超时(refreshmap(),500)
行更改为:
setTimeout(function() {
refreshmap(latitude, longitude);
}, 500);
然后将refreshmap
函数更改为如下内容:
function refreshmap(latitude, longitude){...}
您可能还必须包括其他变量。
setTimeout(refreshmap(),500)代码>应该是setTimeout(refreshmap,500)代码>-您将函数作为参数传递,而不是调用它。@BenjaminGruenbaum有趣。这肯定会延迟第一次迭代,但不会延迟后续迭代。现在,所有的输出都是同质的,甚至在距离/持续时间上都没有变化(好像它只查找单个位置)。setTimeout(refreshmap(),500)代码>应该是setTimeout(refreshmap,500)代码>-您将函数作为参数传递,而不是调用它。@BenjaminGruenbaum有趣。这肯定会延迟第一次迭代,但不会延迟后续迭代。现在,所有的输出都是同质的,甚至在距离/持续时间上都没有变化(好像它只查找单个位置)。这肯定会延迟第一次调用(进度!),但不会延迟for-loop中的任何后续调用。请参阅上面的响应。这肯定会延迟第一次调用(进度!),但不会延迟for-loop中的任何后续调用。使用参数而不是全局变量的好处在于——这完全解决了唯一的输出问题!但每一步之间仍然没有延迟。好吧,你想要的是每次跑步之间500毫秒,对吗?然后,您需要refreshmap
函数在完成更新纬度/经度所需的任何操作后,使用超时来调用自身。问题是,您的所有超时都是连续设置的,设置延迟500毫秒,而不是彼此延迟。这有意义吗?基本上,使用递归会很有帮助。很抱歉:使用参数和setTimeout(refreshmap(latitude,longitude),500)
修复了输出的唯一性,但没有修复预期的延迟。但是,使用setTimeout(函数(){refreshmap(纬度、经度);},500)
似乎无法解决这两个问题。因此,如果我将refreshmap(纬度、经度)
重新制作为递归结构,并将setTimeout(函数…
作为初始/外部调用和内部调用,它将有顺序的延迟?关于使用参数而不是全局变量的好处-这完全解决了唯一的输出问题!但每一步之间仍然没有延迟。好吧,你想要的是每次跑步之间500毫秒,对吗?然后,您需要refreshmap
函数在完成更新纬度/经度所需的任何操作后,使用超时来调用自身。问题是,您的所有超时都是连续设置的,设置延迟500毫秒,而不是彼此延迟。这有意义吗?基本上,使用递归会很有帮助。很抱歉:使用参数和setTimeout(refreshmap(latitude,longitude),500)
修复了输出的唯一性,但没有修复预期的延迟。但是,使用setTimeout(函数(){refreshmap(纬度、经度);},500)
似乎无法解决这两个问题。因此,如果我将refreshmap(纬度、经度)
重新制作为递归结构,并将setTimeout(函数…
作为初始/外部调用和内部调用,它将按顺序延迟?
function refreshmap(latitude, longitude){...}