Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Dimaz
Сообщения: 76 Зарегистрирован: 15 ноя 2012, 18:37
Сообщение
Dimaz » 18 ноя 2012, 19:54
Всем привет. Подскажите пожалуйста почему у меня не работает функция 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
Сообщение
alexei » 18 ноя 2012, 20:10
Код: Выделить всё
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
Сообщение
Dimaz » 18 ноя 2012, 20:18
Ну alert тут был для примера. На самом деле функция будет использовать переменные, находящиеся в VK.init. Алерт работает, да. Но я хочу, чтобы при нажатии на кнопку загружалась фотография выбранного друга на страницу. Как тогда быть? То что нужно добавить в параметр fields значение photo_big это я знаю. Потом добавлю. Но все равно все это будет находиться в VK.init и функция не будет работать. Уже пробовал.
Alazaur
Разработчик
Сообщения: 1001 Зарегистрирован: 16 окт 2011, 20:25
Сообщение
Alazaur » 18 ноя 2012, 20:24
Что вам мешает написать так:
Код: Выделить всё
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
Сообщение
Dimaz » 18 ноя 2012, 20:48
А по другому никак? Вдруг функция будет длинная. Может ее отдельно все таки можно вынести куда-то? И потом просто вызвать через onclick, как у меня в коде.
Alazaur
Разработчик
Сообщения: 1001 Зарегистрирован: 16 окт 2011, 20:25
Сообщение
Alazaur » 18 ноя 2012, 21:24
Вы меня не правильно поняли, функция может быть где угодно, хоть в другом файле. Просто в нее нужно передать переменную.
Вот смотрите пример с созданием формы и передачей ее в функцию по клику на кнопке.
Код: Выделить всё
<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
Сообщение
Dimaz » 18 ноя 2012, 21:44
Все равно ничего не понял.) 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
Сообщение
Alazaur » 18 ноя 2012, 21:59
Ну как-то так
Код: Выделить всё
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
Сообщение
Dimaz » 19 ноя 2012, 17:53
Все равно не работает.
В консоли ошибок браузера пишется:
Сообщение: Требуется объект
Строка: 2
Символ: 1
Код: 0
URI-код:
http://dimazsever.ru/run.js
Dimaz
Сообщения: 76 Зарегистрирован: 15 ноя 2012, 18:37
Сообщение
Dimaz » 19 ноя 2012, 18:02
Я забыл тег <form> добавить. Добавил, теперь появляется символ решетки и сразу исчезает, когда по кнопке нажмешь.
Код: Выделить всё
"><option value="#" disabled selected>Выберите друга</option>';