我在正文中有以下代码
<div id="searchresult" onmouseover="changeMarker(marker1)">
以及头脑中的以下内容
function changeMarker(marker) {
alert(marker);
}
现在当我将鼠标悬停在div上时,我在javascript控制台中出现以下错误
Uncaught ReferenceError: marker1 is not defined
如果我有以下内容,但函数不接受变量,则会调用警告框。
function changeMarker() {
alert('hi');
}
<div id="searchresult" onmouseover="changeMarker()">
我在某处犯了错误吗?
修改
我忘记了我在initialize()中定义了marker1如下(我正在使用google maps v3 api)
var marker1 = new google.maps.Marker({
position: new google.maps.LatLng(1.288693,103.846733),
map: map,
icon: "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=1|c41200|ffffff"
});
这是我正在使用的其余代码:
<div id="searchresult" onmouseover="changeMarker(marker1)">
,功能是
function changeMarker(marker) {
var icon = new Google.maps.MarkerImage({ url:"http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=1|ffffff|c41200"});
marker.setIcon(icon);
}
我得到了同样的错误:未捕获的ReferenceError:未定义marker1
答案 0 :(得分:1)
我忘了我在initialize()
中定义了marker1
然后它的作用域为initialize
,并且无法在更广泛的范围内访问。
您可以删除var
以使其成为全局变量,但您最好在initialize
内使用JS分配事件处理程序,而不是使用HTML属性来执行此操作。
答案 1 :(得分:0)
我认为这会有所帮助:
<div id="searchresult" onmouseover="function(){changeMarker(marker1)}">
答案 2 :(得分:0)
此代码似乎正常运行:
<script>
function changeMarker(marker) {
alert(marker);
}
var marker1 = 'Test Data';
</script>
<style>
#searchresult {
background-color: red;
}
</style>
<div id="searchresult" onmouseover="changeMarker(marker1)">
Test Box
</div>
然而,这样的东西不起作用,因为marker1
的范围仅限于谷歌回调。
<script>
function changeMarker(marker) {
alert(marker);
}
google.setOnLoadCallback(function() {
var marker1 = 'Test Data';
});
</script>
要修复此问题,您可以执行以下操作:
<script>
function changeMarker(marker) {
alert(marker);
}
var marker1;
google.setOnLoadCallback(function() {
marker1 = 'Test Data';
});
</script>