javascript - 函数未在 onclick 事件中调用

标签 javascript jquery function scope onclick

我想在每个 youtube 链接的末尾添加一些 HTML,以在 litebox 中打开播放器。到目前为止,这是我的代码:

$(document).ready(function() {
  var valid_url = new RegExp('youtube\.com\/.*v=([a-zA-Z0-9_-]+)');
  var image_data = 'base64 encoded image';

  init();

  function init() {
    $('a').each(function() {
      if (valid_url.test($(this).attr('href'))) {
        $(this).after( ' <img src="' + image_data + '" onclick="open_litebox(\'hi\');" />' );
      }
    });
  }

  function open_litebox(param) {
    alert(param);
  }
});

它的工作原理是在 youtube 链接之后注入(inject)一些 HTML,如下所示:
<img src="base 64 data" onclick="open_litebox('hi')">

但是当我点击这个 open_litebox()函数没有被调用。查看错误控制台,我可以看到一条错误消息 open_litebox is not defined ,但我已经定义了。

我对这里出了什么问题一无所知,有人可以帮我吗?

谢谢。

最佳答案

当您第一次开始使用 jQuery 时,这是一个常见的问题。这里的问题是您已经在 jQuery 范围内定义了该函数,这意味着不能像普通函数一样调用它来访问它。解决您的问题的方法是将您的函数定义移到您编写的匿名就绪函数之外,如下所示:

$(document).ready(function() {

    // do your stuff here

});

// define your functions here 
function my_func() {

}

哦,我建议对您定义的变量执行相同的操作。也将它们移到您的准备函数之外,因为您将遇到与您的函数相同的问题。

关于javascript - 函数未在 onclick 事件中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45672187/

相关文章:

javascript - 从二维数组中提取两个值但只显示一个

javascript - 将JSON对象中的JSON数组转换为jquery中的数组

javascript - 动态定义硬编码的 Javascript 函数

javascript - 无法在保留所有标点符号的 JavaScript 中标记字符串

javascript - 根据 PHP 输出更改 Javascript src

javascript - 有没有办法让 child 从 jquery 中的某个索引到某个索引

javascript - wkhtmltopdf.exe --no-stop-slow-scripts 不起作用?

python - 我正在寻找一种更简洁的方法来获取多个函数参数的 len

c++ - 类成员和函数c++

javascript - 如何按字母顺序对 HTML 页面的部分(图像和文本)进行排序