Не вызывается функция JS в HTML
Приветствую!
В JS я топор. Прощу помощи Пытаюсь вызвать JS функцию в HTML таким методом: <script type="text/javascript" language="javascript"> showAddress('Москва, ул.Самокатная, д.1., стр.21') </script> но ничего не выходит. Если же я прописываю так: <a href="javascript:showAddress('Москва, ул.Самокатная, д.1., стр.21')">Москва, ул.Самокатная, д.1., стр.21</a> то при нажатии на ссылку все работает. Как мне сделать чтобы функция запускалась автоматом не нажимая на ссылку? |
Скорее всего, на момент загрузки элемента <script> и выполнения в нем кода (а код выполняется сразу же при загрузке) функции showAddress просто не существует. Как запускать функцию автоматом - запускать её лишь тогда, когда она будет объявлена. Как это сделать - без знания кода сказать невозможно.
|
почему тогда она так выполняется
<a href="javascript:showAddress('Москва, ул.Самокатная, д.1., стр.21')">Москва, ул.Самокатная, д.1., стр.21</a> ??? |
В этом случае код выполняется только при нажатии на ссылку, когда страница загрузилась и функция showAddress была инициализирована. Если ты вставляешь код в элемент <script> - этот код выполняется во время загрузки страницы, еще до того, как функция инициализируется.
|
а да точно...
саму функцию я объявляю в <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> подскажите как и что переделать, позарез надо. |
Так, ну функция-то у тебя создается до ее вызова, а вот данные загружаются уже после. Пропиши вызов 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'); }); |
Низкий поклон!
Заработало! Вопрос снят. |
Часовой пояс GMT +3, время: 14:20. |