将变量传递给JavaScript中的函数

时间:2011-05-19 14:26:01

标签: javascript google-maps

我在正文中有以下代码

<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

3 个答案:

答案 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>