- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在通过 google charts 显示货币汇率的折线图.
基本上我有两种类型的值:
我正在尝试实现一个函数来更改 arrayToDataTable 的输入:
dataChart = google.visualization.arrayToDataTable(arrayForChart);
基本上我正在改变两种货币之间基础货币的作用。每次我这样做时折线图都应该反转。
当我按下更改显示按钮一次(“currencyRates_changeDisplay”)时,它会更改图表。他的图是颠倒的,一切正常。但在那之后,图表停留在最后一次更改的值上。并且谷歌图表线不会再改变。
我做了一些调试。
似乎在我按下按钮“#currencyRates_changeDisplay”后,“var arrayForChart”和“var arrayTest”更改为“var arrayChanegeDisplaySettingForChart”的值。之后他们就不再改变了。我认为这是因为这条线:
dataChart = google.visualization.arrayToDataTable(arrayForChart);
但我不确定。这是我的完整代码:
<script>
var arrayForChart;
var arrayTest;
var checkkk=0;
var arrayChanegeDisplaySettingForChart;
var dataChart;
var baseCurrencyDisplaySetting=1;
var baseCurrency="USD";
var dayResults;
var yesterdayResults;
var fromCurrency;
var toCurrency;
var currencyAmount;
var direction;
var percent;
var gainLoss;
loadRates();
$(document).ajaxStop(function () {
if (baseCurrencyDisplaySetting==2){
arrayChanegeDisplaySettingForChart=arrayForChart;
arrayChanegeDisplaySettingForChart=changeArrayForChart(arrayChanegeDisplaySettingForChart);
}
whenAjaxReallyStops();
});
function whenAjaxReallyStops() {
//alert("AJAX REALLY ENDED");
displayCurrencyConverterResult();
dipsplayChart();
displayAllRates();
}
function loadRates(){
baseCurrency = $("#baseCurrency").val();
fromCurrency = $("#currency_from").val();
toCurrency = $("#currency_to").val();
currencyAmount = $("#currency_amount").val();
$.ajax({
type: "POST",
url: "just a url here...",
data: {
baseCurrency: baseCurrency,
toCurrency: toCurrency
},
cache: false
}).done(function(data) {
resultArray=data;
dayResults=resultArray["0"];
yesterdayResults=resultArray["1"];
console.log(dayResults);
console.log(yesterdayResults);
arrayTest=resultArray["arrayForCharts"];
arrayForChart=resultArray["arrayForCharts"];
alert ("arrayForChart changed");
console.log(resultArray);
});
}
function changeArrayForChart(changedArrayForChart){
console.log(changedArrayForChart);
for (var key in changedArrayForChart) {
if (key != 0){
let newRateForChart=1*(1 / changedArrayForChart[key][1]);
changedArrayForChart[key][1]=newRateForChart;
}
}
return changedArrayForChart;
}
function dipsplayChart(){
//from here google chart stuff
google.charts.load("current", {packages: ["corechart", "line"]});
google.charts.setOnLoadCallback(drawLineColors);
//until here google chart stuff
}
function drawLineColors() {
dataChart=null;
if (baseCurrencyDisplaySetting==1){
if (checkkk==0){
console.log (JSON.stringify(arrayForChart));
dataChart = google.visualization.arrayToDataTable(arrayForChart);
}else{
console.log (JSON.stringify(arrayTest));
dataChart = google.visualization.arrayToDataTable(arrayTest);
}
checkkk=checkkk+1;
var titleChartString = baseCurrency + " vs " + toCurrency + " Last 90 days";
}else{
console.log(JSON.stringify(arrayChanegeDisplaySettingForChart));
dataChart = google.visualization.arrayToDataTable(arrayChanegeDisplaySettingForChart);
var titleChartString = toCurrency + " vs " + baseCurrency + " Last 90 days";
}
var options = {
title: titleChartString ,
explorer: {
actions: ["dragToZoom", "rightClickToReset"],
axis: "horizontal",
keepInBounds: true
},
hAxis: {
title: "Date",
format: "d MMM",
},
vAxis: {
title: "Rate",
},
colors: ["#a52714", "#097138"]
};
var chart = new google.visualization.LineChart(document.getElementById("chart_div"));
chart.draw(dataChart, options);
}
$("body").on( "click", "#currencyRates_changeDisplay", function(){
if (baseCurrencyDisplaySetting==1){
baseCurrencyDisplaySetting=2;
if (typeof arrayChanegeDisplaySettingForChart == "undefined"){
arrayChanegeDisplaySettingForChart=arrayForChart;
arrayChanegeDisplaySettingForChart=changeArrayForChart(arrayChanegeDisplaySettingForChart);
}
}else{
baseCurrencyDisplaySetting=1;
}
displayAllRates();
dipsplayChart();
});
</script>
这里是示例数据:
图表数组:
[[{"label":"Date","id":"Date","type":"date"},{"label":"Rate","id":"Rate","type":"number"}],["Date(2017, 3, 10)",3.6618],["Date(2017, 3, 11)",3.6565]]
然后我按下“currencyRates_changeDisplay”按钮。
我在控制台日志中收到此通知:
[Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive.
arrayChanegeDisplaySettingForChart:
[[{"label":"Date","id":"Date","type":"date"},{"label":"Rate","id":"Rate","type":"number"}],["Date(2017, 3, 10)",0.2730897372876727],["Date(2017, 3, 11)",0.2734855736359907]]
然后我再次按下“currencyRates_changeDisplay”按钮。
数组测试:
[[{"label":"Date","id":"Date","type":"date"},{"label":"Rate","id":"Rate","type":"number"}],["Date(2017, 3, 10)",0.2730897372876727],["Date(2017, 3, 11)",0.2734855736359907]
从这里开始,每次我按下“currencyRates_changeDisplay”按钮时:“arrayTest”和“arrayForChart”都停留在“arrayChanegeDisplaySettingForChart”的值上,图表永远不会改变。
谁知道问题出在哪里?
非常感谢!!
最佳答案
您的代码指示仅在 arrayChanegeDisplaySettingForChart
未定义时调用 changeArrayForChart
。因此这只会发生一次,因为在第一次之后,后一个变量不再是未定义的。
所以改变这个:
if (baseCurrencyDisplaySetting==1){
baseCurrencyDisplaySetting=2;
if (typeof arrayChanegeDisplaySettingForChart == "undefined"){
arrayChanegeDisplaySettingForChart=arrayForChart;
arrayChanegeDisplaySettingForChart=changeArrayForChart(arrayChanegeDisplaySettingForChart);
}
}else{
baseCurrencyDisplaySetting=1;
}
收件人:
// For arrays you can just use `!` to test for not being defined:
if (!arrayChanegeDisplaySettingForChart) {
// This happens only once:
arrayChanegeDisplaySettingForChart = arrayForChart;
}
// Now toggle. Note that changeArrayForChart mutates the given array
// so you don't need the return value
changeArrayForChart(arrayChanegeDisplaySettingForChart);
// A way to toggle between 1 and 2:
baseCurrencyDisplaySetting = 3 - baseCurrencyDisplaySetting;
关于javascript - 2 var 数组在我更改 arrayToDataTable 输入后神秘地改变(谷歌图表线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44982912/
我正在尝试更新我的 jtable(更改值并按 Enter 键),但出现错误。由于大小原因,错误未完整。我认为其余部分只是 c3p0 池连接工具生成的不相关信息。 假设 起初,我认为这可能是 c3p0
每当我有两个水平并排的元素并指定了右和/或左填充和/或边距时,元素之间通常会在我指定的上方和上方有空格。我希望有人能告诉我如何消除该空间(没有像负边距这样的笨拙东西)。 请注意:我并不是在寻找替代的多
String[] parts = msg.split(" +\n?"); String room = parts[0]; System.out.println(msg); Sy
我知道“一定有什么东西被改变了”,但我的代码似乎在一夜之间无缘无故地崩溃了。 我的服务器目录结构是这样的: / /scripts /audit /other_things 我在“scripts”文件夹
我正在尝试了解 GCM 的工作原理。为此,我复制/粘贴 http://developer.android.com/ 的代码在“实现 GCM 客户端”部分中提出。 从服务器发送消息是可行的,但是当我的客
在生成随机整数时,我发现了一些有趣的事情(至少对我而言),我无法向自己解释,所以我想我会把它贴在这里。 我的需求很简单:我要生成随机积分 (Int32) ID 并旨在最大程度地减少冲突。生成时间不是问
在这里https://stackoverflow.com/a/19915925/4673197我了解到我可以通过设置 IFS 将字符串拆分为数组。 在这里https://stackoverflow.c
我现在正在为我的 CS 测试学习,并尝试编写代码,以明文形式给出整个 IMDB 数据库,找到电影中共同点最多的 Actor 。我已经差不多完成了,只是不断遇到一个奇怪的 KeyError。这是我的代码
在 Android 平台上开发了几个月之后,我仍然有一个悬而未决的问题。很久以前,我注意到我有一个 Activity 不符合应用程序主题的其余部分。这意味着默认情况下,Activity 的字体颜色是白
本周,我注意到我的团队 Azure 门户上有一个持续的网络作业。 团队中没有人表示他们已经部署了它,或者熟悉它。我找到了这个博客: https://azure.microsoft.com/en-ca/
所以我正在制作一个小型闲置游戏,我的部分努力是格式化所有数字,以便它们之间有逗号(出于美观目的)。我成功地让我的货币 Energy 带有这些逗号,但我很难添加其他变量。我用了num.toLocaleS
我遇到了一个我以前从未见过的奇怪问题,我认为它一定是一些我在代码中没有看到的简单问题。 我有一个项目,其中定义了 2 个 Windows 服务。一个我称为 DataSyncService,另一个称为
我有这个jsfiddle一次有效。 function toggle_off(itemID){ alert(itemID+'->'+document.getElementById(itemID).g
更新:已解决,我是白痴,谢谢大家! Okay little bit weird.. I just created a layout file for list items, I can see it
问题:这段代码究竟在做什么? 另外:“w”的使用方式是否是某种现有算法?我试图弄清楚函数的意图,或者至少描述它产生的数字种类。 上下文:我正在查看 Martin O'Leary 的“Fantasy M
你能帮帮我吗?我正在将自己传递给它自己的纯虚函数。 n->dataCallback(handler, n, hangup); 其中 n 是我的类指针,dataCallback 是它自己的(纯)虚函数(
我知道这里有数百万篇关于这个异常(exception)的帖子,但我不明白这里的这个。我有一个极端简单的示例管道服务: [ServiceContract] public interface ISRARi
此代码有效,但它如何不实际调用任何列出的方法。它有效,但它的工作原理和原因似乎几乎是神奇的。我实际上从未调用过 Equals、GetHashCode 或 Compare,但代码有效。我也从不在实现两个
警告: Element 'TextStyle' from SDK library 'ui.dart' is implicitly hidden by 'text_style.dart'. 代码摘录:
我有一个似乎无法解开的谜。我有这个非常简单的单元测试,它使用了一个非常简单的自定义属性。该属性仅添加到甚至未实例化的 1 个类。我计算属性被构建的次数。由于类 MyDummyClass 上的属性,我希
我是一名优秀的程序员,十分优秀!