我正在尝试将jquery选择器中包含HTML标记的HTML文件中的变量传递给JavaScript函数。
var $tweeter = $('<div class="tweeter" onClick="userTweet(' + streams.home[index].user + ')"></div>');
其中userTweet()
是链接的JavaScript文件中的函数,而streams.home[index].user
是具有user
,message
和created_at
键的用户对象的数组。当我单击div时,出现错误
index.html:1 Uncaught ReferenceError: VARIABLE is not defined at HTMLDivElement.onclick
使用VARIABLE
作为user
的{{1}}属性中的用户名
如何传递此变量以在JavaScript文件中运行该函数?如果您需要任何进一步的信息,请告诉我。
谢谢!
答案 0 :(得分:0)
您的userTweet
在窗口上可用吗?如果是这样
$('<div class="tweeter"/>').on('click', function() {
window.userTweet(streams.home[index].user)
})
答案 1 :(得分:0)
您是单引号(')和双引号(“)的受害者。
当您尝试做
var $tweeter = $('<div class="tweeter" onClick="userTweet(' + streams.home[index].user + ')"></div>');
// For Simplicity assuming streams.home[index].user value is 'mike'
您的字符串不是您期望的。
这是形成的字符串:
<div class="tweeter" onClick="userTweet(mike)"></div>
// Note mike is not a value but as a variable here
这就是您期望的:
<div class="tweeter" onClick="userTweet('mike')"></div>
// Note 'mike' is value here
因此,当您调用userTweet
时,您传递了一个变量mike
,该变量不存在并且出现此错误。
两个调用的区别是userTweet(mike)
和userTweet('mike')
。第一次调用mike
是变量(根据您的情况),第二次调用是一个值。
建议您遵循this link over string and backticks in javascript,因为这可以为您解决问题。
也可以这样做
var $tweeter = $(`<div class="tweeter" onClick="userTweet(' ${streams.home[index].user} ')"></div>`);
// If on older version and new JavaScript is not supported then
var $tweeter = $('<div class="tweeter" onClick="userTweet(' + "'" + streams.home[index].user + "'" + ')"></div>');