将 jquery 元素引用传递给 vanilla javascript

发布于 2025-01-08 12:01:36 字数 491 浏览 1 评论 0原文

我正在尝试用 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 引用传递给普通 javascript 时,出现错误:TypeError: 'undefined' is not an object (evaluating 'a.position=b')。任何帮助表示赞赏。

I'm trying to do something very simple with javascript but can't quite get my head around it. I'm not sure what format I should be passing the var address as.

$(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),
        ...
    });
}

I'm getting an error when I pass the JQuery ref to normal javascript: TypeError: 'undefined' is not an object (evaluating 'a.position=b'). Any help appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

末蓝 2025-01-15 12:01:36

如果我正确地阅读了此内容并且您正确地发布了此代码,则您将传递一个持续到 getMap()不存在的对象,而您想要传递地址对象。如果你纠正这个问题会发生什么?

jQuery 实例与所有其他实例一样只是普通的 javascript 对象,因此应该不会有问题。

If I read this correctly and you posted this code correctly, you pass a non-existing object lasting to getMap(), while you want to pass the address object. What happens if you correct this?

jQuery instances are just normal javascript objects like all others, so there should not be a problem.

流年里的时光 2025-01-15 12:01:36

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

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

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

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

You're passing the variable latLng to getMap, but its value isn't set. Your ready function at the top should look like this:

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

Or, if you're trying to pass the address variable you set, make your ready function look like this:

$(function() {
    $('.latlng').each(function(){
        var address = $(this).html();
        getMap(address);
    });
});
紅太極 2025-01-15 12:01:36

您的问题与 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] )
    );
});

Your issue has nothing to do with jquery or javascript.
You are passing the wrong data into the LatLng method.

You need to pass in two parameters to the LatLng method:
...

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
        ...
    });
}

If you are trying to get your LatLng coords from a text div then you need to convert your strings into floats.

Supposing the following html is what you use:

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

Then this would be the function running getMap() for every .latlng list item:

$('.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] )
    );
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文