2014-02-05 155 views
0

JavaScript新手在这里....我需要调用传递两个变量的JavaScript函数。然后我需要通过onClick事件将这两个变量传递给另一个函数。这里的总体思路是:通过Onclick将Javascript变量传递给另一个函数

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); 
}; 

我无法看到SecondFunction VAR1 & VAR2()。这里有什么问题?

+3

内联单击事件处理程序将在* global scope *中计算,而不在函数范围内。它看起来像你正在使用jQuery,所以用它来创建DOM元素并绑定事件处理程序。 http://learn.jquery.com/using-jquery-core/manipulating-elements/,http://learn.jquery.com/events/event-basics/ –

+0

谢谢@FelixKling。我不熟悉jQuery,所以我不确定如何按照你的建议 - 我通过将var1&var2声明为全局变量解决了部分问题,至少现在我可以在SecondFunction调用中看到它们。这是Facebook 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 elementsbind the event handler

这样,就可以避免整个问题(而不必使用全局变量):

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

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

因为现在事件处理程序与访问的闭包var1var2

+0

再次感谢@FelixKling !!这是我需要给我一个跳跃的开始。我确实使用了您提供的链接,但没有相关示例,这对我来说几乎是希腊文。 jQuery对我来说是新语言,但你的回答非常有帮助。现在,如果我可以使用该函数的其他问题工作,现在它得到的变量我将全部设置! – Tom

0

试试这个

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

为什么OP应该这样做? **解释**你的答案,不要忘记提及,只有当'var1'和'var2'是数字,布尔值或正则表达式时才会起作用。 –

0

尝试

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

OP为什么要这样做? **解释**你的答案,不要忘记提及,只有当'var1'和'var2'是数字,布尔值或正则表达式时才有效。 –

相关问题