Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript";不是一个函数;_Javascript_Html - Fatal编程技术网

JavaScript";不是一个函数;

JavaScript";不是一个函数;,javascript,html,Javascript,Html,知道为什么会这样吗? 错误: Uncaught TypeError: initMap.addMarker is not a function at HTMLButtonElement.onclick (Map.html?_ijt=k803v4m45uoctft4qso4948sma:148) 代码(重要位): //初始化并添加映射 函数initMap(){ var uluru={lat:41.9973,lng:21.4280}; //以乌鲁鲁为中心的地图 var map=new go

知道为什么会这样吗? 错误:

Uncaught TypeError: initMap.addMarker is not a function
    at HTMLButtonElement.onclick (Map.html?_ijt=k803v4m45uoctft4qso4948sma:148)
代码(重要位):


//初始化并添加映射
函数initMap(){
var uluru={lat:41.9973,lng:21.4280};
//以乌鲁鲁为中心的地图
var map=new google.maps.map(
getElementById('map'),{zoom:14,center:uluru});
//位于乌卢鲁的标记
//var marker=new google.maps.marker({position:uluru,map:map});
功能添加标记(道具){
var marker=new google.maps.marker({
位置:道具,坐标,
地图:地图
//图标:props.iconImage
});
//检查自定义图标
如果(道具图像){
//设置图标图像
marker.setIcon(props.iconImage);
}
//检查内容
如果(道具内容){
var infoWindow=new google.maps.infoWindow({
内容:道具内容
});
}
}
}
我的谷歌地图演示
镫骨标记

当我点击按钮时,我得到了一个错误,这个按钮应该调用嵌套函数addMarker。谢谢

看起来initMap()函数之外的任何代码都无法访问addMarker函数()。我建议您看看这个站点,稍微向下看一下“嵌套函数和闭包”一节。我认为要访问它,您需要执行
initMap().addMarker({…})
fn\u addMarker({…})
(找到)

addMarker不可访问。您需要将该方法添加到initMap函数中。下面是一个小例子:

function initMap()
{
    function addMarker(props){
        console.log(props);
    }

    initMap.addMarker = addMarker;
}

initMap()
initMap.addMarker('works')

initMap
不返回包含
addMarker
的内容
initMap
根本不返回任何内容。
addMarker
initMap
的本地对象(就像
uluru
map
),您不能在
initMap
之外访问它,这是一个函数,而不是一个对象。
function initMap()
{
    function addMarker(props){
        console.log(props);
    }

    initMap.addMarker = addMarker;
}

initMap()
initMap.addMarker('works')