Не работает функция в onClick

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Не работает функция в onClick

Сообщение Dimaz »

Всем привет. Подскажите пожалуйста почему у меня не работает функция select_h_friend, вызываемая событием onClick. Вот код:

Код: Выделить всё

$(document).ready(function(){            VK.init(function() {    // инициализируем Vk API function select_h_friend() {alert("Кнопка работает");}     VK.api('friends.get',{'fields':'uid, first_name, last_name'},function(data) {          if (data.response) {                    var profilesCount = data.response.length;            var friends_help_box = '';             if(profilesCount) {                            friends_help_box = '<select name="uid" id="h_friend"><option value="#" disabled selected>Выберите друга</option>';                                for (var i=0; i<profilesCount; i++) {                                        friends_help_box += '<option value="' + data.response[i].uid + '">' + data.response[i].first_name + ' ' + data.response[i].last_name + '</option>';                                }                                friends_help_box += '</select>';                friends_help_box += '<span style="padding-left: 5px;"><button onclick="select_h_friend();">Выбрать</button></span>';                                $('#yes').html(friends_help_box);                        }            else {                $('#yes').html('');            }                }            }); });}); 
Аватара пользователя
alexei
Разработчик
Разработчик
Сообщения: 836
Зарегистрирован: 21 янв 2010, 19:44

Re: Не работает функция в onClick

Сообщение alexei »

Код: Выделить всё

function select_h_friend() {alert("Кнопка работает");} $(document).ready(function(){           VK.init(function() {    // инициализируем Vk API      VK.api('friends.get',{'fields':'uid, first_name, last_name'},function(data) {         if (data.response) {                   var profilesCount = data.response.length;            var friends_help_box = '';             if(profilesCount) {                           friends_help_box = '<select name="uid" id="h_friend"><option value="#" disabled selected>Выберите друга</option>';                               for (var i=0; i<profilesCount; i++) {                                       friends_help_box += '<option value="' + data.response[i].uid + '">' + data.response[i].first_name + ' ' + data.response[i].last_name + '</option>';                               }                               friends_help_box += '</select>';                friends_help_box += '<span style="padding-left: 5px;"><button onclick="select_h_friend();">Выбрать</button></span>';                               $('#yes').html(friends_help_box);                       }            else {                $('#yes').html('');            }               }           }); });}); 
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Не работает функция в onClick

Сообщение Dimaz »

Ну alert тут был для примера. На самом деле функция будет использовать переменные, находящиеся в VK.init. Алерт работает, да. Но я хочу, чтобы при нажатии на кнопку загружалась фотография выбранного друга на страницу. Как тогда быть? То что нужно добавить в параметр fields значение photo_big это я знаю. Потом добавлю. Но все равно все это будет находиться в VK.init и функция не будет работать. Уже пробовал.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Не работает функция в onClick

Сообщение Alazaur »

Что вам мешает написать так:

Код: Выделить всё

friends_help_box += '<span style="padding-left: 5px;"><button onclick="select_h_friend(\''+data.response[i].photo_big+'\');">Выбрать</button></span>';
......
......

Код: Выделить всё

function select_h_friend(img) {alert(img);}
или передать форму в функцию.

[UPD] парсер форума экранирующие слэши съедает.
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Не работает функция в onClick

Сообщение Dimaz »

А по другому никак? Вдруг функция будет длинная. Может ее отдельно все таки можно вынести куда-то? И потом просто вызвать через onclick, как у меня в коде.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Не работает функция в onClick

Сообщение Alazaur »

Вы меня не правильно поняли, функция может быть где угодно, хоть в другом файле. Просто в нее нужно передать переменную.
Вот смотрите пример с созданием формы и передачей ее в функцию по клику на кнопке.

Код: Выделить всё

<script type="text/javascript">    <!--    function talkWithMe(myform)     {        alert(myform.items.value); //Выдает привет или пока в зависимости от выбранного варианта.    }            str = '<form>'+        '<select name="items">'+        '<option value="Привет"> Скажи привет </option>'+        '<option value="Пока"> Скажи пока </option>'+        '</select>'+        '<input type="button" onclick="talkWithMe(this.form)" value="Говори уже">'+    '</form>';    document.write(str);        //--></script>
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Не работает функция в onClick

Сообщение Dimaz »

Все равно ничего не понял.) 2 года назад последний раз программированием занимался, все уже забылось. Можете в моем коде показать как это сделать:

Код: Выделить всё

function select_h_friend() {$('#no').html(friends_help_box);} $(document).ready(function(){            VK.init(function() {    // инициализируем Vk API     VK.api('friends.get',{'fields':'uid, first_name, last_name'},function(data) {          if (data.response) {                    var profilesCount = data.response.length;            var friends_help_box = '';             if(profilesCount) {                            friends_help_box = '<select name="uid" id="h_friend"><option value="#" disabled selected>Выберите друга</option>';                                for (var i=0; i<profilesCount; i++) {                                        friends_help_box += '<option value="' + data.response[i].uid + '">' + data.response[i].first_name + ' ' + data.response[i].last_name + '</option>';                                }                                friends_help_box += '</select>';                 friends_help_box += '<span style="padding-left: 5px;"><button onclick="select_h_friend();">Выбрать</button></span>';                 $('#yes').html(friends_help_box);                        }            else {                $('#yes').html('');            }                }            }); });}); 
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Не работает функция в onClick

Сообщение Alazaur »

Ну как-то так

Код: Выделить всё

function select_h_friend(myform) {$('#no').html(myform.uid.value);} $(document).ready(function(){    VK.init(function() {    // инициализируем Vk API         VK.api('friends.get',{'fields':'uid, first_name, last_name'},function(data) {            if (data.response) {                var profilesCount = data.response.length;                var friends_help_box = '';                if(profilesCount) {                    friends_help_box = '<form><select name="uid" id="h_friend"><option value="#" disabled selected>Выберите друга</option>';                    for (var i=0; i<profilesCount; i++) {                        friends_help_box += '<option value="' + data.response[i].uid + '">' + data.response[i].first_name + ' ' + data.response[i].last_name + '</option>';                    }                    friends_help_box += '</select>';                    friends_help_box += '<span style="padding-left: 5px;"><button onclick="select_h_friend(this.form);">Выбрать</button></span></form>';                    $('#yes').html(friends_help_box);                }                else {                    $('#yes').html('');                }            }         });    });});
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Не работает функция в onClick

Сообщение Dimaz »

Все равно не работает. :( В консоли ошибок браузера пишется:
Сообщение: Требуется объект
Строка: 2
Символ: 1
Код: 0
URI-код: http://dimazsever.ru/run.js
Dimaz
Сообщения: 76
Зарегистрирован: 15 ноя 2012, 18:37

Re: Не работает функция в onClick

Сообщение Dimaz »

Я забыл тег <form> добавить. Добавил, теперь появляется символ решетки и сразу исчезает, когда по кнопке нажмешь.

Код: Выделить всё

"><option value="#" disabled selected>Выберите друга</option>'; 
Ответить