尝试从innerhtml调用Javascript函数
我试图在点击一个按钮后显示一张地图。我的代码如下尝试从innerhtml调用Javascript函数,javascript,google-api,Javascript,Google Api,我试图在点击一个按钮后显示一张地图。我的代码如下 List.innerHTML = '<input type="button" value="Click me" onclick="'+calcRoute()+'">'; function calcRoute() { var start = "san bernardino, ca"; var end = "los angeles, ca";
List.innerHTML = '<input type="button" value="Click me" onclick="'+calcRoute()+'">';
function calcRoute() {
var start = "san bernardino, ca";
var end = "los angeles, ca";
var request = {
origin:start,
destination:end,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
return directionsDisplay.setDirections(response);
}
});
}
List.innerHTML='';
函数calcRoute(){
var start=“加利福尼亚州圣贝纳迪诺”;
var end=“加利福尼亚州洛杉矶”;
var请求={
来源:start,
目的地:完,
travelMode:google.maps.travelMode.DRIVING
};
路由(请求、功能(响应、状态){
if(status==google.maps.directionstatus.OK){
返回方向显示。设置方向(响应);
}
});
}
调试时,CalCrout显示为未定义。单击按钮后,我想显示两个关注点之间的方向。在构建HTML时,您正在调用
calcRoute
函数:
List.innerHTML = '<input type="button" value="Click me" onclick="'+calcRoute()+'">';
// ----------------------------------------------------------------^^^^^^^^^^^
也许你只是想:
List.innerHTML = '<input type="button" value="Click me" onclick="calcRoute()">';
List.innerHTML='';
因此,当您单击按钮时,
calcRoute
将被调用。也许我完全错了,但我认为您不应该使用“+function+”,而应该使用function。您的代码:`。。。onclick=“calcRoute()”>`我已经试过了,但仍然不起作用。你能提供一些信息吗?我也试过,但它抛出了一个错误,说calcRoute没有定义。我不明白它为什么找不到函数。你需要提供更多的上下文,例如,由于calcRoute
是全局可访问的,所以它可以正常工作。失败,因为calcRoute
是在函数内部定义的,因此无法在该函数外部看到它。这些示例之间的唯一区别是,第一个示例在侧栏中设置为“No wrap=in”,第二个示例在侧栏中设置为“onLoad”。这就是我要求提供更多上下文的原因。是的,关于函数的全局可访问性,你是对的。目前它嵌套在另一个函数中,但我尝试将calcRoute()函数放在函数initialize()的右括号之后我仍然没有定义。好的。我设法让一个示例代码正常工作。我是JS新手。我把它放在其他函数之外的list.innerHTML下面,函数正在被调用。但是我不知道如何在单击按钮后在新页面中显示地图。我尝试了window.open(directionsDisplay.setDirections(response));然后会出现一个新页面,但它是空白的。首先,您确实应该停止使用onclick
attributes period,直接附加处理程序函数可以避免许多范围界定问题。第二,最后的评论对我来说似乎是另一个问题。
List.innerHTML = '<input type="button" value="Click me" onclick="calcRoute()">';