04.04.2014, 18:44
|
Интересующийся
|
|
Регистрация: 04.06.2013
Сообщений: 19
|
|
Не вызывается функция JS в HTML
Приветствую!
В JS я топор. Прощу помощи
Пытаюсь вызвать JS функцию в HTML таким методом:
<script type="text/javascript" language="javascript">
showAddress('Москва, ул.Самокатная, д.1., стр.21')
</script>
но ничего не выходит.
Если же я прописываю так:
<a href="javascript:showAddress('Москва, ул.Самокатная, д.1., стр.21')">Москва, ул.Самокатная, д.1., стр.21</a>
то при нажатии на ссылку все работает.
Как мне сделать чтобы функция запускалась автоматом не нажимая на ссылку?
|
|
04.04.2014, 19:27
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Скорее всего, на момент загрузки элемента <script> и выполнения в нем кода (а код выполняется сразу же при загрузке) функции showAddress просто не существует. Как запускать функцию автоматом - запускать её лишь тогда, когда она будет объявлена. Как это сделать - без знания кода сказать невозможно.
|
|
04.04.2014, 19:36
|
Интересующийся
|
|
Регистрация: 04.06.2013
Сообщений: 19
|
|
почему тогда она так выполняется
<a href="javascript:showAddress('Москва, ул.Самокатная, д.1., стр.21')">Москва, ул.Самокатная, д.1., стр.21</a>
???
|
|
04.04.2014, 19:39
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
В этом случае код выполняется только при нажатии на ссылку, когда страница загрузилась и функция showAddress была инициализирована. Если ты вставляешь код в элемент <script> - этот код выполняется во время загрузки страницы, еще до того, как функция инициализируется.
|
|
04.04.2014, 19:41
|
Интересующийся
|
|
Регистрация: 04.06.2013
Сообщений: 19
|
|
а да точно...
саму функцию я объявляю в <head> документа
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=AAxdPlMBAAAAtF8OewMAdeohAZP2V7UNQIga GBL1CzxrEf0AAAAAAAAAAACSv_9W2SVDOURAo9v_4FDuNoFBbQ ==" type="text/javascript"></script>
<script type="text/javascript">
var map, geoResult;
// Создание обработчика для события window.onLoad
YMaps.jQuery(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
// Добавление элементов управления
map.addControl(new YMaps.TypeControl());
});
// Функция для отображения результата геокодирования
// Параметр value - адрес объекта для поиска
function showAddress (value) {
// Удаление предыдущего результата поиска
map.removeOverlay(geoResult);
// Запуск процесса геокодирования
var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});
// Создание обработчика для успешного завершения геокодирования
YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
// Если объект был найден, то добавляем его на карту
// и центрируем карту по области обзора найденного объекта
if (this.length()) {
geoResult = this.get(0);
map.addOverlay(geoResult);
map.setBounds(geoResult.getBounds());
}else {
alert("Ничего не найдено")
}
});
// Процесс геокодирования завершен неудачно
YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
alert("Произошла ошибка: " + error);
})
}
</script>
</script>
подскажите как и что переделать, позарез надо.
|
|
04.04.2014, 20:03
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Так, ну функция-то у тебя создается до ее вызова, а вот данные загружаются уже после. Пропиши вызов showAddress вот здесь:
YMaps.jQuery(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
// Добавление элементов управления
map.addControl(new YMaps.TypeControl());
showAddress('Москва, ул.Самокатная, д.1., стр.21');
});
|
|
04.04.2014, 20:08
|
Интересующийся
|
|
Регистрация: 04.06.2013
Сообщений: 19
|
|
Низкий поклон!
Заработало!
Вопрос снят.
|
|
|
|