index.html:1未捕获的ReferenceError:在HTMLDivElement.onclick中未定义VARIABLE

时间:2018-10-18 19:01:29

标签: javascript jquery html

我正在尝试将jquery选择器中包含HTML标记的HTML文件中的变量传递给JavaScript函数。

var $tweeter = $('<div class="tweeter" onClick="userTweet(' + streams.home[index].user + ')"></div>');

其中userTweet()是链接的JavaScript文件中的函数,而streams.home[index].user是具有usermessagecreated_at键的用户对象的数组。当我单击div时,出现错误

index.html:1 Uncaught ReferenceError: VARIABLE is not defined at HTMLDivElement.onclick

使用VARIABLE作为user的{​​{1}}属性中的用户名

如何传递此变量以在JavaScript文件中运行该函数?如果您需要任何进一步的信息,请告诉我。

谢谢!

2 个答案:

答案 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>');