如何在同一页面上使用相同的javascript变量?

时间:2011-01-18 17:26:03

标签: javascript variables embed

我们的服务可以在您的网页上添加一些javascript并显示一些跟踪数据,但我希望客户能够在同一页面上嵌入多个嵌入代码实例。

现在的问题是我不能在页面上包含相同的变量名称。

例如:

<script type="text/javascript">
  var ttp_number = "1Z8E26R80281495993"; // Tracking number

  var ttp_key="123456";
  (function(){
    document.write('<div id="ttp"></div>');
    s=document.createElement('script');
    s.type="text/javascript";
    s.src="http://c.trackthepack.com/j/e?" + Math.random();
    setTimeout("document.getElementById('ttp').appendChild(s);",1);
  })()
</script>

然后,如果他们想再次嵌入,我必须更改所有变量名称:

<script type="text/javascript">
  var ttp_number_001 = "446888240962"; // Tracking number

  var ttp_key_001="123456";
  (function(){
    document.write('<div id="ttp_001"></div>');
    s_001=document.createElement('script');
    s_001.type="text/javascript";
    s_001.src="http://c.trackthepack.com/j/e?" + Math.random();
    setTimeout("document.getElementById('ttp_001').appendChild(s_001);",1);
  })()
</script>

我可以让他们更改function()块的内容,但ttp_numberttp_key需要保持相同的变量名称。

现在,当我在页面上有多个嵌入时,它们都会继承上一个嵌入代码中变量的内容。

所以,最终的问题在这里......我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

也许将ttp_key和ttp_number存储在数组中?

答案 1 :(得分:1)

为什么不在函数体中声明变量。然后他们只限于那个功能。将脚本转储到HTML中时,仍可以将它们设置为不同的值。

我知道你提到/暗示用户可以编辑这个功能(出于某种原因),但这对我来说似乎是一个伤害的世界,所以我希望事实并非如此。

答案 2 :(得分:0)

为什么要与Math.random()进行协调? http://c.trackthepack.com/j/e的JavaScript经常更改吗?如果没有,你应该让缓存完成它的工作。

但是,如果是这样,你能否使它足够动态来检查它所调用的参数并直接使用这些参数,而不是通过全局window对象中继它们,以便加载http://c.trackthepack.com/j/e?n=446888240962&k=123456和当脚本运行时,它不需要查找它们吗?