[英]Pass a array from one function to another
我有這段代碼可以從xml文件中獲取數據。 我需要將這些數據提供給當前位於數組中的Google圖表。 我需要將xml值傳遞到Google圖表。 誰能幫我解決這個問題。 下面是我的代碼。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
var values = [];
$(document).ready(function() {
$.ajax({
type: "GET",
url: "ChartData.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('Pie').each(function() {
var sTitle = $(this).find('Title').text();
var sValue = $(this).find('Value').text();
values.push([sTitle, sValue]);
});
drawChart(values);
},
error: function() {
alert("An error occurred while processing XML file.");
}
});
});
function drawChart(val) {
alert(val);
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
var options = {
title: 'My Daily Activities'
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
</script>
<title>My Read</title>
</head>
<body>
<div id="piechart" style="width: 900px; height: 500px;"></div>
</body>
</html>
Xml文件
<?xml version="1.0" encoding="utf-8" ?>
<Chart>
<Pie>
<Title>Task</Title>
<Value>Hours per Day</Value>
</Pie>
<Pie>
<Title>Work</Title>
<Value>11</Value>
</Pie>
<Pie>
<Title>Eat</Title>
<Value>2</Value>
</Pie>
<Pie>
<Title>Commute</Title>
<Value>2</Value>
</Pie>
<Pie>
<Title>Watch TV</Title>
<Value>2</Value>
</Pie>
<Pie>
<Title>Sleep</Title>
<Value>7</Value>
</Pie>
</Chart>
改變這個
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
至
var data = google.visualization.arrayToDataTable((Array.isArray(val) && val.length) ? val : [
['Task', 'Hours per Day'],
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
如果value數組且不為空-將val
傳遞給函數,否則傳遞默認選項。
您還需要將sValue
從字符串轉換為數字,像這樣
$(xml).find('Pie').each(function() {
var sTitle = $(this).find('Title').text();
var sValue = $(this).find('Value').text();
if (!isNaN(+sValue)) {
sValue = +sValue;
}
values.push([sTitle, sValue]);
});
您已經將該數組傳遞給drawChart()
函數,
drawChart(values);
希望它能正常工作。
也許您只是通過兩次調用drawChart
混淆自己:一次在google.setOnLoadCallback(drawChart)
,一次在成功函數中。 刪除setOnLoadCallback
的一個(或創建一個關注兩者的加載狀態並在加載兩者時調用drawChart
)。 並實施亞歷山大的建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.