小编mcl*_*mcl的帖子

旧版本的javascript评估("-1"<0)是否为false?

我兄弟的电子商务网站上的一些js计算并存储每次有人结账时的交易总额.定期为tracker_total_amount存储负值.当他试图弄清楚为什么时,他决定硬编码覆盖,这应该用无意义的值来解决约0.1%的交易.它看起来像这样:

var tracker_total_amount = parseFloat(tracker.total_amount).toFixed(2);
    if(tracker_total_amount < 0){
        tracker_total_amount = 0;
    }
Run Code Online (Sandbox Code Playgroud)

负值继续出现在系统中.

原理:

我不认为他应该使用.toFixed,因为这会将tracker_total_amount转换为字符串 - 在我看来,这会阻止if <0条件按预期工作.在我测试它并且覆盖工作之前,我对这个解释非常满意.见这里:http://jsfiddle.net/yXTrz/

新理论:

不同的用户正在运行不同版本的javascript.一些非常小的子集使用古老版本的javascript(而不是像我一样将字符串转换为浮点数)继续将其视为字符串并始终将tracker_total_amount评估为> 0,从而防止覆盖被触发.

题:

旧版本的javascript是否以这种方式运行?有些用户仍然可以运行这些旧版本吗?最重要的是 - 有没有一种方法可以模拟遗留版本的javascript来证明我的理论?

编辑:我应该指出所有重要的东西(支付等)依赖于服务器端的计算值.这里的数字就是之后存储在Google Analytics中的数据,因此 - 虽然可以操作 - 但结果不会太糟糕.

javascript

10
推荐指数
1
解决办法
359
查看次数

nvD3的新功能 - 如何使我的unix时间戳在x轴上显示为日期?

由于披露 - 我在javascript上很糟糕,但是想要学习!

我有一个数组,其中包含一些类似的条目:

[1349013600] => 232

关键是unix时间戳,值是当天的销售额.我目前正在多线图上绘制这些图表,效果很好.

问题是我的x轴,目前定义如下:

chart.xAxis
.tickFormat(d3.format(',f'));
Run Code Online (Sandbox Code Playgroud)

它将unix时间戳作为直线int输出,与x轴标签和悬停工具提示相对应.我想尝试将其输出为DMY或类似的人类可读日期指示器.

我找到的最接近的是这段代码:

chart.xAxis.tickFormat(function(d) {
       var dx = testdata[0].values[d] && testdata[0].values[d].x || 0;
   return d3.time.format('%x')(new Date(dx))
 });
Run Code Online (Sandbox Code Playgroud)

但我正在努力了解它正在做什么,并且无法在我的特定图表上实现.当前代码如下所示:

nv.addGraph(function() {
var chart = nv.models.multiBarChart()
            .stacked(true)

chart.xAxis
    .tickFormat(d3.format(',f'));

chart.yAxis
    .tickFormat(function(d) { return '$' + d3.format(',f')(d) });

d3.select('#chart1 svg')
    .datum(test_data2)
  .transition().duration(500).call(chart);

nv.utils.windowResize(chart.update);

return chart;
});
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何使它工作 - 更重要的是 - 为什么?感谢任何指导!

d3.js nvd3.js

8
推荐指数
2
解决办法
6350
查看次数

标签 统计

d3.js ×1

javascript ×1

nvd3.js ×1