尝试从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()">';