- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想使用 this git repository 中的代码在网页上显示多个甘特图.第一个甘特图使用 <div id="DIV_MyVar">
正确呈现包含来自 d3.select(#DIV_MyVar").append("svg")
的正确信息在<script>
.但对于所有后续甘特图,d3.select()
不附加 <svg>
部分到 <div id="DIV_MyVar">
这样<div>
显示为空并且未创建甘特图。
谁能说出为什么d3.select().append()
适用于第一个甘特图但不适用于其后的甘特图?
HTML 代码如下所示:
<html>
<head>
<title>Search Results</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script language="Javascript" type="text/javascript" src="{% static 'd3-timeline.js' %}"></script>
<STYLE type="text/css">
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
font-family: sans-serif;
font-size: 10px;
}
.timeline-label {
font-family: sans-serif;
font-size: 12px;
}
#timeline2 .axis {
transform: translate(0px,30px);
-ms-transform: translate(0px,30px); /* IE 9 */
-webkit-transform: translate(0px,30px); /* Safari and Chrome */
-o-transform: translate(0px,30px); /* Opera */
-moz-transform: translate(0px,30px); /* Firefox */
}
.coloredDiv {
height:20px; width:20px; float:left;
}
</STYLE>
</head>
<body>
<script language="Javascript" type="text/javascript">
window.onload = function() {
var MyVar = [{label: "F7", times: [{"starting_time":1420228800000, "ending_time":1420257600000}]}]
function drawtimeline_MyVar() {
var chart = d3.timeline()
.stack() // toggles graph stacking
.rowSeperators("rgb(100,100,100)")
.click(function (d, i, datum) {
var myWindow=window.open("", "MsgWindow", "width=500, height=500");
myWindow.document.write(d.info);
})
.scroll(function (x, scale) {
$("#scrolled_date").text(scale.invert(x) + " to " + scale.invert(x+1000));
})
.showBorderFormat({marginTop:25, marginBottom:2, width:10, color:"rgb(0, 0, 0)"})
.display("rect")
.tickFormat({format: d3.time.format("%Y %j"), tickTime: d3.time.days, tickInterval: 1, tickSize: 12 })
.margin({left:220, right:30, top:0, bottom:0})
.width(1000)
;
var svg = d3.select("#DIV_MyVar").append("svg").attr("width", 1000)
.datum(MyVar).call(chart);
}
//Call the function
drawtimeline_MyVar();
}
</script>
<div>
<h4><p class="text-center">Requests</p></h4>
<div id="DIV_MyVar"></div>
</div>
<script language="Javascript" type="text/javascript">
window.onload = function() {
var MyVar2 = [{label: "F7", times: [{"starting_time":1420228800000, "ending_time":1420257600000}]}]
function drawtimeline_MyVar2() {
var chart = d3.timeline()
.stack() // toggles graph stacking
.rowSeperators("rgb(100,100,100)")
.click(function (d, i, datum) {
var myWindow=window.open("", "MsgWindow", "width=500, height=500");
myWindow.document.write(d.info);
})
.scroll(function (x, scale) {
$("#scrolled_date").text(scale.invert(x) + " to " + scale.invert(x+1000));
})
.showBorderFormat({marginTop:25, marginBottom:2, width:10, color:"rgb(0, 0, 0)"})
.display("rect")
.tickFormat({format: d3.time.format("%Y %j"), tickTime: d3.time.days, tickInterval: 1, tickSize: 12 })
.margin({left:220, right:30, top:0, bottom:0})
.width(1000)
;
var svg = d3.select("#DIV_MyVar2").append("svg").attr("width", 1000)
.datum(MyVar2).call(chart);
}
//Call the function
drawtimeline_MyVar2();
}
</script>
<div>
<h4><p class="text-center">Requests2</p></h4>
<div id="DIV_MyVar2"></div>
</div>
</body>
</html>
作为旁注,我尝试更改 div ID 的变量名称,以便它们是唯一的,但这使得第二个甘特图呈现而不是第一个。
最佳答案
您应该将 svg 渲染到不同的 div 容器。
var svg = d3.select("#DIV_MyVar1")
.append("svg").attr("width", 1000)
.datum(MyVar).call(chart);
当然,具有指定 id 的 div 容器应该出现在 html 文档中。
<div id="DIV_MyVar1"></div>
这是您的完整代码,具有修改后的功能。
<html>
<head>
<title>Search Results</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script language="Javascript" type="text/javascript" src="{% static 'd3-timeline.js' %}"></script>
<STYLE type="text/css">
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
font-family: sans-serif;
font-size: 10px;
}
.timeline-label {
font-family: sans-serif;
font-size: 12px;
}
#timeline2 .axis {
transform: translate(0px,30px);
-ms-transform: translate(0px,30px); /* IE 9 */
-webkit-transform: translate(0px,30px); /* Safari and Chrome */
-o-transform: translate(0px,30px); /* Opera */
-moz-transform: translate(0px,30px); /* Firefox */
}
.coloredDiv {
height:20px; width:20px; float:left;
}
</STYLE>
</head>
<body>
<script language="Javascript" type="text/javascript">
window.onload = function() {
var MyVar = [{label: "F7", times: [{"starting_time":1420228800000, "ending_time":1420257600000}]}]
function drawtimeline_MyVar(n) { //added parameter
var chart = d3.timeline()
.stack() // toggles graph stacking
.rowSeperators("rgb(100,100,100)")
.click(function (d, i, datum) {
var myWindow=window.open("", "MsgWindow", "width=500, height=500");
myWindow.document.write(d.info);
})
.scroll(function (x, scale) {
$("#scrolled_date").text(scale.invert(x) + " to " + scale.invert(x+1000));
})
.showBorderFormat({marginTop:25, marginBottom:2, width:10, color:"rgb(0, 0, 0)"})
.display("rect")
.tickFormat({format: d3.time.format("%Y %j"), tickTime: d3.time.days, tickInterval: 1, tickSize: 12 })
.margin({left:220, right:30, top:0, bottom:0})
.width(1000)
;
var svg = d3.select("#DIV_MyVar"+n).append("svg").attr("width", 1000)
.datum(MyVar).call(chart);
}
//Call the function
drawtimeline_MyVar(1);
drawtimeline_MyVar(2);
}
</script>
<div>
<h4><p class="text-center">Requests</p></h4>
<div id="DIV_MyVar1"></div><!-- changed id -->
</div>
<script language...>
same script as above
</script>
<div>
<h4><p class="text-center">Requests2</p></h4>
<div id="DIV_MyVar2"></div><!-- changed id -->
</div>
</body>
</html>
另一个版本
<html>
<head>
<title>Search Results</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script language="Javascript" type="text/javascript" src="{% static 'd3-timeline.js' %}"></script>
<STYLE type="text/css">
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
font-family: sans-serif;
font-size: 10px;
}
.timeline-label {
font-family: sans-serif;
font-size: 12px;
}
#timeline2 .axis {
transform: translate(0px,30px);
-ms-transform: translate(0px,30px); /* IE 9 */
-webkit-transform: translate(0px,30px); /* Safari and Chrome */
-o-transform: translate(0px,30px); /* Opera */
-moz-transform: translate(0px,30px); /* Firefox */
}
.coloredDiv {
height:20px; width:20px; float:left;
}
</STYLE>
</head>
<body>
<script language="Javascript" type="text/javascript">
var MyVar = [{label: "F7", times: [{"starting_time":1420228800000, "ending_time":1420257600000}]}]
function drawtimeline_MyVar() {
var chart = d3.timeline()
.stack() // toggles graph stacking
.rowSeperators("rgb(100,100,100)")
.click(function (d, i, datum) {
var myWindow=window.open("", "MsgWindow", "width=500, height=500");
myWindow.document.write(d.info);
})
.scroll(function (x, scale) {
$("#scrolled_date").text(scale.invert(x) + " to " + scale.invert(x+1000));
})
.showBorderFormat({marginTop:25, marginBottom:2, width:10, color:"rgb(0, 0, 0)"})
.display("rect")
.tickFormat({format: d3.time.format("%Y %j"), tickTime: d3.time.days, tickInterval: 1, tickSize: 12 })
.margin({left:220, right:30, top:0, bottom:0})
.width(1000)
;
var svg = d3.select("#DIV_MyVar").append("svg").attr("width", 1000)
.datum(MyVar).call(chart);
}
</script>
<div>
<h4><p class="text-center">Requests</p></h4>
<div id="DIV_MyVar"></div>
</div>
<script language="Javascript" type="text/javascript">
var MyVar2 = [{label: "F7", times: [{"starting_time":1420228800000, "ending_time":1420257600000}]}]
function drawtimeline_MyVar2() {
var chart = d3.timeline()
.stack() // toggles graph stacking
.rowSeperators("rgb(100,100,100)")
.click(function (d, i, datum) {
var myWindow=window.open("", "MsgWindow", "width=500, height=500");
myWindow.document.write(d.info);
})
.scroll(function (x, scale) {
$("#scrolled_date").text(scale.invert(x) + " to " + scale.invert(x+1000));
})
.showBorderFormat({marginTop:25, marginBottom:2, width:10, color:"rgb(0, 0, 0)"})
.display("rect")
.tickFormat({format: d3.time.format("%Y %j"), tickTime: d3.time.days, tickInterval: 1, tickSize: 12 })
.margin({left:220, right:30, top:0, bottom:0})
.width(1000)
;
var svg = d3.select("#DIV_MyVar2").append("svg").attr("width", 1000)
.datum(MyVar2).call(chart);
}
</script>
<div>
<h4><p class="text-center">Requests2</p></h4>
<div id="DIV_MyVar2"></div>
</div>
<script>
window.onload = function() {
//Call the function
drawtimeline_MyVar();
drawtimeline_MyVar2();
}
</script>
</body>
</html>
关于html - d3.select().append() 多次使用时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30578042/
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我试图用这种形式简单地获取数字 28 integer+space+integer+integer+space+integer我试过这个正则表达式 \\s\\d\\d\\s 但我得到了两个数字11 和
最近一直在学习D语言。我一直对运行时感到困惑。 从我能收集到的关于它的信息中,(这不是很多)我知道它是一种有助于 D 的一些特性的运行时。像垃圾收集一样,它与您自己的程序一起运行。但是既然 D 是编译
想问一下这两个正则表达式有区别吗? \d\d\d 与 \d{3} 我已经在我的本地机器上使用 Java 和 Windows 操作系统对此进行了测试,两者都工作正常并且结果相同。但是,当在 linux
我正在学习 Go,而且我坚持使用 Go 之旅(exercise-stringer.go:https://tour.golang.org/methods/7)。 这是一些代码: type IPAddr
我在Java正则表达式中发现了一段令我困惑的代码: Pattern.compile( "J.*\\d[0-35-9]-\\d\\d-\\d\\d" ); 要编译的字符串是: String string
我在 ruby 代码上偶然发现了这个。我知道\d{4})\/(\d\d)\/(\d\d)\/(.*)/是什么意思,但是\1-\2-\3-\4 是什么意思? 最佳答案 \1-\2-\3-\4 是 b
我一直在努力解决这个问题,这让我很恼火。我了解 D 运行时库。它是什么,它做什么。我也明白你可以在没有它的情况下编译 D 应用程序。就像 XoMB 所做的那样。好吧,XoMB 定义了自己的运行时,但是
我有两个列表列表,子列表代表路径。我想找到所有路径。 List> pathList1 List> pathList2 当然是天真的解决方案: List> result = new ArrayList>
我需要使用 Regex 格式化一个字符串,该字符串包含数字、字母 a-z 和 A-Z,同时还包含破折号和空格。 从用户输入我有02-219 8 53 24 输出应该是022 198 53 24 我正在
目标是达到与this C++ example相同的效果: 避免创建临时文件。我曾尝试将 C++ 示例翻译为 D,但没有成功。我也尝试过不同的方法。 import std.datetime : benc
tl;dr:你好吗perfect forwarding在 D? 该链接有一个很好的解释,但例如,假设我有这个方法: void foo(T)(in int a, out int b, ref int c
有什么方法可以在 D 中使用abstract auto 函数吗? 如果我声明一个类如下: class MyClass { abstract auto foo(); } 我收到以下错误: mai
有没有人为内存中重叠的数组切片实现交集?算法在没有重叠时返回 []。 当 pretty-print (使用重叠缩进)内存中重叠的数组切片时,我想要这个。 最佳答案 如果您确定它们是数组,那么只需取 p
我已经开始学习 D,但我在使用 Andrei Alexandrescu 所著的 The D Programming Language 一书中提供的示例时遇到了一些麻烦。由于 int 和 ulong 类
如何创建一个不可变的类? 我的目标是创建一个实例始终不可变的类。现在我只是用不可变的方法和构造函数创建了一个“可变”类。我将其称为 mData,m 表示可变。然后我创建一个别名 alias immut
不久前我买了《The D Programming Language》。好书,很有教育意义。但是,我在尝试编译书中列出的语言功能时遇到了麻烦:扩展函数。 在这本书中,Andrei 写了任何可以像这样调用
我在 D http://www.digitalmars.com/d/2.0/lazy-evaluation.html 中找到了函数参数的惰性求值示例 我想知道如何在 D 中实现可能的无限数据结构,就像
这个问题在这里已经有了答案: 12 年前关闭。 Possible Duplicate: Could anyone explain these undefined behaviors (i = i++
当前是否可以跨模块扫描/查询/迭代具有某些属性的所有函数(或类)? 例如: source/packageA/something.d: @sillyWalk(10) void doSomething()
我是一名优秀的程序员,十分优秀!