Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не вызывается функция JS в HTML (https://javascript.ru/forum/misc/46295-ne-vyzyvaetsya-funkciya-js-v-html.html)

all4me1982 04.04.2014 18:44

Не вызывается функция JS в HTML
 
Приветствую!
В JS я топор. Прощу помощи
Пытаюсь вызвать JS функцию в HTML таким методом:

<script type="text/javascript" language="javascript">
showAddress('Москва, ул.Самокатная, д.1., стр.21')
</script>
но ничего не выходит.
Если же я прописываю так:
<a href="javascript:showAddress('Москва, ул.Самокатная, д.1., стр.21')">Москва, ул.Самокатная, д.1., стр.21</a>
то при нажатии на ссылку все работает.

Как мне сделать чтобы функция запускалась автоматом не нажимая на ссылку?

Erolast 04.04.2014 19:27

Скорее всего, на момент загрузки элемента <script> и выполнения в нем кода (а код выполняется сразу же при загрузке) функции showAddress просто не существует. Как запускать функцию автоматом - запускать её лишь тогда, когда она будет объявлена. Как это сделать - без знания кода сказать невозможно.

all4me1982 04.04.2014 19:36

почему тогда она так выполняется
<a href="javascript:showAddress('Москва, ул.Самокатная, д.1., стр.21')">Москва, ул.Самокатная, д.1., стр.21</a>

???

Erolast 04.04.2014 19:39

В этом случае код выполняется только при нажатии на ссылку, когда страница загрузилась и функция showAddress была инициализирована. Если ты вставляешь код в элемент <script> - этот код выполняется во время загрузки страницы, еще до того, как функция инициализируется.

all4me1982 04.04.2014 19:41

а да точно...
саму функцию я объявляю в <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>

подскажите как и что переделать, позарез надо.

Erolast 04.04.2014 20:03

Так, ну функция-то у тебя создается до ее вызова, а вот данные загружаются уже после. Пропиши вызов 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');
});

all4me1982 04.04.2014 20:08

Низкий поклон!
Заработало!
Вопрос снят.


Часовой пояс GMT +3, время: 04:25.