这是我的JavaScript:
<script type="text/javascript">
(function () {
var lidd = 1;
var ga1 = document.createElement('script'); ga1.type = 'text/javascript';
ga1.async = true;
var res = ["A1LpRTPOUKU%3d", "a8g%2bUPW0%2bck%3d", "ptb0PT3OMIc%3d", "8NzewxsG6Zc%3d"];
for (var i = 0; i < res.length; i++) {
alert('mid=' + res[i]);
ga1.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://') + 'localhost:59115/ui/trackconversion.aspx?cid=CAR9nmKJG1A%3d&mid=' + res[i] + '&lid=' + lidd;
var s1 = document.getElementsByTagName('script')[0];
s1.parentNode.insertBefore(ga1, s1);
}
})();
</script>
我的问题是for
循环在此代码中无法正常工作。这里res
的长度为4,因此循环应执行4次,但在我的代码中,它只是部分执行。这意味着,当我执行代码时,我会alert('mid=' + res[i]);
4次显示所有四个值,即"A1LpRTPOUKU%3d"
,"a8g%2bUPW0%2bck%3d"
,"ptb0PT3OMIc%3d"
和"8NzewxsG6Zc%3d"
。但在那之后,我的trackconversion.aspx
只被击中一次,而不是被击中4次。
我做错了什么?
答案 0 :(得分:6)
您需要将document.createElement部分放在for循环中。你现在正在做的是创建一次脚本标记,将其添加到文档,然后多次更改src。
这不能按预期工作,您必须为每个src创建一个新的脚本元素。例如:
(function () {
var lidd = 1;
var res = ["A1LpRTPOUKU%3d", "a8g%2bUPW0%2bck%3d", "ptb0PT3OMIc%3d", "8NzewxsG6Zc%3d"];
for (var i = 0; i < res.length; i++) {
var ga1 = document.createElement('script'); ga1.type = 'text/javascript';
ga1.async = true;
alert('mid=' + res[i]);
ga1.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://') + 'localhost:59115/ui/trackconversion.aspx?cid=CAR9nmKJG1A%3d&mid=' + res[i] + '&lid=' + lidd;
var s1 = document.getElementsByTagName('script')[0];
s1.parentNode.insertBefore(ga1, s1);
}
})();