将jquery元素引用传递给vanilla javascript

passing jquery element reference to vanilla javascript

本文关键字:vanilla javascript jquery 元素 引用      更新时间:2023-09-26

我试图用javascript做一些非常简单的事情,但我无法完全理解。我不确定我应该以什么格式传递var地址。

$(function() {
    $('.latlng').each(function(){
        var address = $(this).html();
        getMap(address);
    });
});
function getMap(address) {
    var map = new google.maps.Map(mapDiv, {
        center: new google.maps.LatLng(address),
        ...
    });
}

当我将JQuery ref传递给普通javascript:TypeError:'undefined'不是对象(正在计算'a.position=b')时,我遇到了一个错误。请提供任何帮助。

如果我读对了这篇文章,并且您正确地发布了这段代码,那么您将向getMap()传递一个不存在的对象,而您希望传递地址对象。如果你纠正了这个问题,会发生什么?

jQuery实例和其他实例一样只是普通的javascript对象,所以应该没有问题。

您将变量latLng传递给getMap,但未设置其值。顶部的ready函数应该如下所示:

$(function() {
    $('.latlng').each(function(){
        var address = $(this).html();
        getMap(this);
    });
});

或者,如果您试图传递您设置的address变量,请使您的就绪函数如下所示:

$(function() {
    $('.latlng').each(function(){
        var address = $(this).html();
        getMap(address);
    });
});

您的问题与jquery或javascript无关。您将错误的数据传递到LatLng方法中。

您需要将两个参数传递给LatLng方法:…

var mapDiv = $('#mapDiv')[0], // also make sure the div is a regular dom node
    lat = 7.1011123,
    lng = 4.6667566;
function getMap(address) {
    var map = new google.maps.Map(mapDiv, {
        center: new google.maps.LatLng( lat, lng ), // you must pass in two parameters
        ...
    });
}

如果您试图从文本div中获取LatLng坐标,则需要将字符串转换为浮点值。

假设您使用以下html:

<ul>
    <li class="latlng">7.4142335,3.1296874</li>
    <li class="latlng">8.4135039,-5.1256828</li>
    <li class="latlng">-14.4101158,-5.2810335</li>
</ul>

那么这将是为每个.latlng列表项运行getMap()的函数:

$('.latlng').each(function( i ){
    var address = $(this).text();
    address = address.split(','); // convert your text into an array
    // send in your lat and lng strings parsed as floats
    getMap(
        parseFloat( address[0] ),
        parseFloat( address[1] )
    );
});