javascript - 在 d3 节点上调用 if…then 函数

标签 javascript d3.js

我正在尝试调用 d3 中的条件函数,但无法让此代码正常工作。

我的 d3 代码:

//create a div element within #container for each object
day = d3.select("#container").selectAll("div")
    .data(data)
    .enter()
        .append("div");

我想根据对象的 date 属性添加一个具有不同文本的 p 元素:

//get today's date
var today = new Date();

//if after today
if (Date.parse(d.date) > today) {

    //print 'after today!'
    day.append('p').text(function(d) { return "after today!" });

//otherwise
} else {

    //print 'today or before'
    day.append('p').text(function(d) { return "today or before!" });
};

有人可以帮我让它发挥作用吗?

最佳答案

您没有提及 d.date 的格式。如果它已经是日期,只需执行以下操作:

day
 .append('p')
 .text(function(d) { 
   return (d.date.getTime() > Date.now()) ? "after today!" : "before today!";
 });

如果不是日期,则转换为日期,然后调用 getTime()

编辑

对于您在评论中描述的情况,请使用 .each:

var data = [1,0,1];
      
var div = d3.select('body')
  .selectAll('div')
  .data(data)
  .enter()
  .append('div')
  .each(function(d){
    var self = d3.select(this);
    if (d === 1){
      self.append('p')
        .text('Hi Mom!')
    } else {
      self.append('img')
        .attr('src','https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png')
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

关于javascript - 在 d3 节点上调用 if…then 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698196/

相关文章:

javascript - 如何将元素设置为默认状态(hide ())以及单击时(show())

javascript 将谷歌云存储桶公开给特定的 URL 或网站

javascript - 如何根据数组的数据更新 d3 donut 中的文本标签

javascript - nvd3 饼图显示 Uncaught TypeError : Cannot call method 'map' of undefined

javascript - 脚本无法处理简单的算术

php - 菜鸟: display err_msg on page (pt. 2)

javascript - extjs4 用图像问题替换按钮

javascript - NVD3 图表 'No Data' 消息未居中

r - 如何在 R 中使用 d3Network 可视化图形

javascript - D3.js 趋势线 x 轴日期