Web ページに複数の D3.js グラフがあります。ユーザーがボタンをクリックすると、新しいグラフが下にスライドし、古いグラフが上にスライドします。私はいくつかの調査を行い、いくつかのリンクを見つけました。私がやりたいことをするものはここにあります: http://d3export.cancan.cshl.edu/。しかし、私はそれを機能させることができません。これは、私のものと非常によく似たコードを含む JSFiddle です。
ここにJSコードがあります
$(function () {
$(".show").click(function () {
$(".targetDiv").slideUp("fast");
if ($("#graph" + $(this).attr("target")).css("display") != "block") {
$("#graph" + $(this).attr("target")).slideDown("fast");
}
});
});
(function () {
// Graph 1 code
show_svg_code();
}) ();
(function () {
// Graph 2 code
show_svg_code();
}) ();
// ... etc.
function submit_download_form(output_format) {
var tmp = document.getElementById(/* What ID goes here? */);
var svg = tmp.getElementsByTagName("svg")[0];
var svg_xml = (new XMLSerializer).serializeToString(svg);
var form = document.getElementById("svgform");
form['output_format'].value = output_format;
form['data'].value = svg_xml ;
form.submit();
}
function show_svg_code() {
var tmp = document.getElementById("#graph1");
var svg = tmp.getElementsByTagName("svg")[0];
var svg_xml = (new XMLSerializer).serializeToString(svg);
$("#svg_code").text(svg_xml);
}
$(document).ready(function() {
$("#save_as_svg").click(function() { submit_download_form("svg"); });
$("#save_as_pdf").click(function() { submit_download_form("pdf"); });
$("#save_as_png").click(function() { submit_download_form("png"); });
});
ここに私のものに似たHTMLがあります
<a class="show" target="1">Chart 1</a>
<a class="show" target="2">Chart 2</a>
// ... etc.
<button type="button" onclick="javascript:submit_download_form('svg')">SVG</button>
<button type="button" onclick="javascript:submit_download_form('pdf')">PDF</button>
<button type="button" onclick="javascript:submit_download_form('png')">PNG</button>
<div id="graph1" class="targetDiv"></div>
<div id="graph2" class="targetDiv"></div>
// ... etc.
<form id="svgform" method="post" action="download.pl">
<input type="hidden" id="output_format" name="output_format" value="">
<input type="hidden" id="data" name="data" value="">
</form>
私が抱えている問題は、ページに複数のグラフがあることです。30 近くのグラフがあり、それらはすべて非表示になっています (表示されているグラフを除く)。どうすればこれを回避できますか?JS では、ターゲット グラフの ID を要求します。表示されているグラフのみをターゲットにするにはどうすればよいですか? これは、できれば IE、Chrome、Firefox、および Safari でも動作する必要があります。
助けてくれてありがとう
編集: 彼がリンクしている Perl スクリプトがあるようです。ファイルをサーバーに保存しましたが、まだ機能しません (download.pl として保存し、.html ファイルと同じフォルダーに保存しようとした後、同じフォルダーに保存しようとしました) .js ファイルとして)。
編集 2: サーバーに libRSVG プラグインがありません。フォルダ(V.2.37.0.tar.xz)をダウンロードしたのですが、100個くらいのファイルが入っています。どうすればいいですか?