在新链接点击中调用现有的javascript

时间:2014-05-24 14:00:59

标签: javascript

首先,这是一个菜鸟问题,因为我对网络开发一无所知。 我正在创建一个prestashop网站,我有一个模块,显示一个带有优惠券代码的javascript弹出窗口,当有人点击另一个地方的特定链接时,我想做什么来调用相同的脚本主页面。我搜索了脚本的源代码,我认为这是一个:

<script>
var ju_num=(typeof ju_num === 'undefined') ? '58D7493F-E32E-4ADF-AB9B-9DE26502404C' : ju_num;var asset_host='//d2j3qa5nc37287.cloudfront.net/';
(
    function() {
        setTimeout(
                function(){
                    var s=document.createElement('script');
                    s.type='text/javascript';
                    s.async=true;
                    s.src=asset_host+'coupon_code1.js';
                    var x=document.getElementsByTagName('script')[0];
                    x.parentNode.insertBefore(s,x);},500
                  )
                }
)()
</script>

如何在点击链接上调用此脚本?

先谢谢。

编辑:

通过回答帮助,我创建了一个包含以下内容的javascript文件:

 function show_coupon() {

 var a = document.getElementById("my_coupon");
 a.onclick = function(){
                var ju_num=(typeof ju_num === 'undefined') ? '58D7493F-E32E-4ADF-AB9B-9DE26502404C' : ju_num;
                var asset_host='//d2j3qa5nc37287.cloudfront.net/';
                var s=document.createElement('script');
                s.type='text/javascript';
                s.async=true;
                s.src=asset_host+'coupon_code1.js';
                var x=document.getElementsByTagName('script')[0];
                x.parentNode.insertBefore(s,x);
            }
            return false;
      }

然后我在我的索引中加载了javascript文件,如下所示:

    <script type="text/javascript" src="/js/coupon.js"></script>

最后我改变了我的链接:

 <a id="my_coupon" title="" href="javascript:show_coupon()"></a>

但不幸的是,当我点击我的链接时没有任何反应。

编辑2:

我理解错误,这个脚本只是加载coupon_code1.js中包含的函数,只需要在链接中调用正确的函数。 问题解决了。

1 个答案:

答案 0 :(得分:0)

现在的代码不能从其他地方调用,因为变量声明在全局范围内,而另一个代码包含在一个自执行的匿名函数中,该函数没有存储在任何地方的引用。您可以访问全局变量,但无法访问该函数(初始执行后)。

在其他地方调用它的最简单方法是将它包装在一个函数声明中,如下所示:

function popup(){
    // code here
}

可以从任何地方调用它,例如从链接中调用它:

// use this before the </body> or wrap in a window.onload handler
document.getElementById("yourlinkid").onclick = popup;