2014-02-05 2 views
0

JavaScript-новичок здесь .... Мне нужно вызвать функцию JavaScript, которая передает две переменные. Затем мне нужно, чтобы эти 2 переменные передавались другой функции через событие onClick. Вот общая идея:Передать переменную Javascript на другую функцию через Onclick

function FirstFunction(var1, var2) { 
    // Using console.log to verify passed variables 
    console.log(uid); 
    console.log(accessToken); 
    $('#dialog-message').html('<div><button onclick="SecondFunction(var1, var2)">Submit</button></div>'); 
}; 

function SecondFunction(var1, var2) { 
    // Using console.log to verify passed variables 
    console.log(uid); 
    console.log(accessToken); 
}; 

Я не могу видеть var1 var2 & в SecondFunction(). Что здесь не так?

+3

Обработчик события inline click будет оцениваться в * глобальной области *, а не внутри области функций. Похоже, вы используете jQuery, поэтому используйте его для создания элементов DOM и привяжите обработчик событий. http://learn.jquery.com/using-jquery-core/manipulating-elements/, http://learn.jquery.com/events/event-basics/ –

+0

Спасибо @FelixKling. Я не очень хорошо разбираюсь в jQuery, поэтому я не уверен, как это сделать, как вы предложили - я тем не менее решил часть своей проблемы, объявив var1 & var2 в качестве глобальных переменных, и я могу по крайней мере теперь увидеть их во втором вызове функции. Это часть проблемы JavaScript JavaScript SDK. Что я написал в отдельном вопросе, если вы думаете, что можете помочь. (http://stackoverflow.com/questions/21608444/fb-api-doesnt-completly-execute-when-called-from-another-function-call) - Еще раз спасибо. – Tom

+0

Вот почему я добавил ссылки;) Но в любом случае я добавил ответ, надеюсь, это поможет! –

ответ

1

Мой оригинальный комментарий:

Рядный Обработчик события щелчка будет оцениваться в глобальном масштабе, а не внутри области видимости функции. Похоже, вы используете jQuery, поэтому используйте его для create the DOM elements и bind the event handler.

Таким образом, вы можете избежать всей проблемы (и не должны использовать глобальные переменные):

function FirstFunction(var1, var2) { 
    var $button = $('<button />', { 
     click: function() { 
      SecondFunction(var1, var2); 
     }, 
     text: 'Submit' 
    }); 

    $('<div />').append($button).appendTo('#dialog-message'); 
} 

Потому что теперь обработчик события является замыканием с доступом к var1 и var2.

+0

Еще раз спасибо @FelixKling !! Это то, что мне нужно было дать мне начать прыжок. Я использовал ссылки, которые вы предоставили, но это было очень много греческого для меня без соответствующего примера. jQuery - это новый язык для меня, но ваш ответ очень помог. Теперь, если бы я мог другой вопрос с этой функцией работать теперь, что он получает переменные, я буду установлен! – Tom

0

Попробуйте

$('#dialog-message').html('<div><button onclick="SecondFunction('+ var1 + ','+ var2+ ')">Submit</button></div>'); 
+0

Зачем нужно это делать? ** Объясните ** ваш ответ и не забывайте упоминать, что это работает только в том случае, если 'var1' и' var2' являются числами, логическими или регулярными выражениями. –

0

Попробуйте

$('#dialog-message').html('<div><button onclick="SecondFunction(' + var1 +', ' + var2 + ')>Submit</button></div>'); 
+2

Зачем нужно это делать? ** Объясните ** ваш ответ и не забывайте упоминать, что это работает, только если 'var1' и' var2' являются числами, булевыми или регулярными выражениями. –

Смежные вопросы