Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改javascript的输出_Javascript_Events_Google Analytics_Universal Analytics - Fatal编程技术网

更改javascript的输出

更改javascript的输出,javascript,events,google-analytics,universal-analytics,Javascript,Events,Google Analytics,Universal Analytics,我有一个脚本(一部分),它根据时间设置将事件发送到分析。默认情况下,它每10秒发送一次事件,输出为ga(“发送”、“事件”、“时间”、“日志”、“0:10”),10秒后为ga(“发送”、“事件”、“时间”、“日志”、“0:20”) 我搞不清楚的是,当我更改时间设置以每20秒触发一个事件时,如何获得此输出ga(“发送”、“事件”、“时间”、“日志”、“0:20”),以及20秒后的下一个ga(“发送”、“事件”、“时间”、“日志”、“0:40”) 这是我的密码 var stLogInterval =

我有一个脚本(一部分),它根据时间设置将事件发送到分析。默认情况下,它每10秒发送一次事件,输出为ga(“发送”、“事件”、“时间”、“日志”、“0:10”),10秒后为ga(“发送”、“事件”、“时间”、“日志”、“0:20”)

我搞不清楚的是,当我更改时间设置以每20秒触发一个事件时,如何获得此输出ga(“发送”、“事件”、“时间”、“日志”、“0:20”),以及20秒后的下一个ga(“发送”、“事件”、“时间”、“日志”、“0:40”)

这是我的密码

var stLogInterval = 20;

function TrackingLogTime(tosArray) {
    return tosArray[0] == 50 ? (parseInt(tosArray[1]) + 1) + ":00" : (tosArray[1] || "0") + ":" + (parseInt(tosArray[0]) + 10 )
}

function stInitializeControlVars() {
    if (typeof window.stLogInterval == "undefined") {
        window.stLogInterval = 10000
    }
}

function startTimeTracking(tos) {
    stInitializeControlVars();
    window.stIntervalObj = window.setInterval(function() {
        total_time += 10;
        tos = TrackingLogTime(tos.split(":").reverse());
        ga("send", "event", "Time", "Log", tos)
    }, (window.stLogInterval))
}

jQuery(document).ready(function() {
    startTimeTracking("00")
})

有没有办法将stLogInterval添加到TrackingLogTime?我试图用+stLogInterval替换+10,但没有成功。

您需要更改此行

return tosArray[0] == 50 ? (parseInt(tosArray[1]) + 1) + ":00" : (tosArray[1] || "0") + ":" + (parseInt(tosArray[0]) + 10 )
对这个

return tosArray[0] == 40 ? (parseInt(tosArray[1]) + 1) + ":00" : (tosArray[1] || "0") + ":" + (parseInt(tosArray[0]) + 20 )
window.stLogInterval=10000
window.stLogInterval=20000

======================================================================= 其他注意事项包括:

我还想警告您,依赖javascript计时器是不安全的,因为js是单线程的,您希望在超时或间隔过后调用的代码可以在以后调用得更多。虽然间隔20秒,我认为这不是问题所在

顺便说一下,你的代码有些混乱。这句话似乎没用

total_time += 10;
这也是
var stLogInterval=20和这个

if (typeof window.stLogInterval == "undefined") {
    window.stLogInterval = 10000
}
这是胡说八道。您需要专门使用variable或window属性,而不是两者,最好是variable

========================

根据评论进行更新

您需要将函数TrackingLogTime更改为

function TrackingLogTime(tosArray) {
    var minPart;
    var sec = +tosArray[0] + 20;
    if (sec >= 60) {
        minPart = +tosArray[1] + 1;
        sec -= 60;
    } else {
        minPart = tosArray[1] || '0';
    }
    sec = sec < 10 ? '0' + sec : sec;
    return minPart + ':' + sec;
}
函数跟踪日志时间(tosArray){
var minPart;
var sec=+tosArray[0]+20;
如果(秒>=60){
minPart=+tosArray[1]+1;
sec-=60;
}否则{
minPart=tosArray[1]| |“0”;
}
秒=秒<10?'0'+秒:秒;
返回minPart+':'+秒;
}

并且必须设置
window.stLogInterval=20000
,而不是10000。我真的不喜欢这个功能,它有点不合逻辑,但这些是所需的小改动。

是否希望时间以分钟、小时显示?i、 e.
0:20
0:40
1:00
等等?现在的情况是几秒钟。所以0:20是20秒,虽然我同意它看起来像几分钟。输出应该是0:20和0:40等等。谢谢,我知道最后一部分是秒,可以接受0:100而不是1:40吗?虽然我认为这是不可接受的,但这是不可能的。我担心这会影响我以前在分析方面的数据。谢谢。代码中的混乱可能对代码的其他部分有用。我只拿出了这个问题所需要的部分。实际上,人们可以自己设置时间变量。如果他们把变量设置为30秒呢?当我手动更改时,我知道上面的操作正常,但是如果有人在插件选项页面上更改了时间变量,那么输出也应该相应地更改。@WendiT那么您可能需要相应地将
total_time+=10
更改为+=20。当我说50和10以及40和20是一分钟的秒数时,我理解正确吗?第10步和第20步是要采取的步骤?@WendiT第10步和第20步(我想你问的是
总时间+=10;
总时间+=20;
)我不知道是什么。我可以猜10秒和20秒,这个变量在其他地方使用。对于50和10以及40和20,此逻辑将获取您以前的时间字符串,例如
1:40
将其拆分为一个数组并还原,因此您将获得
[40:1]
,然后检查您是否有40,它将1添加到分钟值,并将秒值设置为0。所以,是的,你是对的,这些是秒,总时间是另一个函数所需要的。你还可以看看关于这个的第五条评论吗:人们实际上可以自己设置时间变量。如果他们把变量设置为30秒呢?我知道当我手动更改它时,上面的操作是有效的,但是如果有人更改插件选项页面上的时间变量,输出也应该相应地更改。