передача ссылки на элемент jquery в ванильный javascript - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь сделать что-то очень простое с 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не объект (оценивает 'a.position = b') .Любая помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 23 февраля 2012

Если я прочитал это правильно, и вы правильно разместили этот код, вы передаете несуществующий объект на getMap(), в то время как вы хотите передать объект адреса. Что произойдет, если вы исправите это?

Экземпляры jQuery - это обычные объекты javascript, как и все остальные, поэтому проблем не должно быть.

0 голосов
/ 09 мая 2012

Ваша проблема не имеет ничего общего с 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
        ...
    });
}

Если вы пытаетесь получить координаты LatLng из текстового div, вам нужно преобразовать строки в числа с плавающей точкой.

Предположим, вы используете следующий 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>

Тогда это будет функция, запускающая getMap() для каждого элемента списка .latlng:

$('.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] )
    );
});
0 голосов
/ 23 февраля 2012

Вы передаете переменную latLng в getMap, но ее значение не установлено. Ваша ready функция вверху должна выглядеть так:

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

Или, если вы пытаетесь передать установленную переменную address, сделайте готовую функцию похожей на:

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