javascript 练习题目答案
//廖雪峰的博客的这个教程的答案
//https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143449990549914b596ac1da54a228a6fa9643e88bc0c000#0 var
canvas = document.getElementById('stock-canvas'),
width = canvas.width,
height = canvas.height,
ctx = canvas.getContext('2d');
console.log(JSON.stringify(data[0])); // {"date":"20150602","open":4844.7,"close":4910.53,"high":4911.57,"low":4797.55,"vol":62374809900,"change":1.69}
ctx.clearRect(0, 0, width, height); //已知函数传进来的data是一个数组,数组的每个元素是一个对象,格式如下
//{"date":"20150602","open":4844.7,"close":4910.53,"high":4911.57,"low":4797.55,"vol":62374809900,"change":1.69}
//其中我们能用到的是 open , close, high, low
//解释一下四个参数的含义,我们知道K线图的形状 类似于汉字 中 其中
//high表示的是中字中间一竖的最上边一点的Y坐标,
//low 是中字中间一竖的最下边一点的Y坐标,
//如果open大于close,则表示股票交易结束的时候比开始的时候低了,则要用绿色表示
//open是中字中间的口的上边一横的Y坐标,
//close是下边一横的Y坐标 //data = data.slice(data.length-2)
console.log("width="+width+" heigth="+height ); //计算最上和最下的留白
liubai = 0.01 * height;
arangeY = {
startY : liubai,
endY : height-liubai
}; calcBulk = function(inputdata, xrange, arangeY){
var widthPerBulk = xrange/inputdata.length;
//绘制节点信息列表
var paintBulkList = [];
//绘制的一个节点
var paintBulk = {color:null, lineStart:{x:0, y:0},lineEnd:{x:0, y:0}, boxStart:{x:0, y:0},boxEnd:{x:0, y:0}};
//求最高点
var highest = inputdata.reduce(function(x,y){
x => {if(x.high) x.high; else x;}
if(x>y.high)
{
return x;
}
else
{
return y.high;
}
});
//求最低点
var lowest = inputdata.reduce(function(x,y){
x => {if(x.low) x.low; else x;}
if(x<y.low)
{
return x;
}
else
{
return y.low;
}
}); //每个点数对应多少像素
var hightRate = (arangeY.endY - arangeY.startY)/(highest-lowest);
console.log("high="+highest+" low="+lowest+" rate="+hightRate);
for(let i=0;i<inputdata.length;i++)
{
//计算颜色
var boxColor = "";
var boxStartVal = NaN;
var boxHeightVal = NaN;
if(inputdata[i].open > inputdata[i].close)
{//green
boxColor = "#dc0000";
boxStartVal = inputdata[i].close;
}
else
{//red
boxColor = "#1caa3d";
boxStartVal = inputdata[i].open;
}
boxHeightVal = Math.abs(inputdata[i].open-inputdata[i].close); paintBulkList.push({color:boxColor,
lineStart:{x:Math.round((i*widthPerBulk)+(widthPerBulk/2)), y:Math.round(arangeY.startY+(inputdata[i].low-lowest)*hightRate)},
lineEnd:{x:Math.round((i*widthPerBulk)+(widthPerBulk/2)), y:Math.round(arangeY.startY+(inputdata[i].high-lowest)*hightRate)},
boxStart:{x:Math.round((i*widthPerBulk)+1), y:Math.round(arangeY.startY+(boxStartVal-lowest)*hightRate)},
boxRange:{width:Math.round(widthPerBulk-2), height:Math.round(arangeY.startY+boxHeightVal*hightRate)}});
} return paintBulkList;
} paintList = calcBulk(data, width, arangeY);
console.log("paintList="+JSON.stringify(paintList));
//画图
ctx.clearRect(0, 0, width, height ); //
ctx.fillStyle = '#000000'; //
ctx.fillRect(0, 0, width, height ); //
for(let i=0;i<data.length;i++)
{ ////////////////////box
ctx.fillStyle = paintList[i].color; // 设置颜色
ctx.fillRect(paintList[i].boxStart.x, paintList[i].boxStart.y, paintList[i].boxRange.width, paintList[i].boxRange.height ); //
///////////////////line
// 设置线条的颜色
ctx.strokeStyle = 'white';
// 设置线条的宽度
ctx.lineWidth = 1; // 绘制直线
ctx.beginPath();
// 起点
ctx.moveTo(paintList[i].lineStart.x, paintList[i].lineStart.y);
// 终点
ctx.lineTo(paintList[i].lineEnd.x, paintList[i].lineEnd.y);
ctx.closePath();
ctx.stroke();
}
javascript 练习题目答案的更多相关文章
- javascript 练习题目答案2
https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014503724525055 ...
- javascript 练习题目答案1
以下是这个教程的答案 https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143 ...
- 自家人不认识自家人——考你一道有趣的Javascript小题目
今天的内容很简单,给大家分享一个有趣的Javascript小题目. 题目很简单,就是填空: var a = ______; var b = a; alert(a==b); // alert " ...
- 30个你 “ 不可能全部会做 ” 的javascript题目-答案解释
题目链接:http://www.cnblogs.com/0603ljx/p/4458127.html 1,D map对数组的每个元素调用定义的回调函数并返回包含结果的数组.["1" ...
- JavaScript变态题目
刚才发现的一些变态的 JavaScript 题目,做了一下,只对了一半,特此发到园子里,和友友们分享一下.这些题目都是针对 Ecmascript 第三版的,原题里面全部都是选择题,有备选答案,这里我把 ...
- 偏前端 - div+mui+vue.js 制作问卷调查单页 ——题目答案由后台随机给出10道
封装的ajax获取数据.代码可能有些是多余的,没做处理!!点击提交后有弹框,在这里我没有贴出来.第一次写博客,这些也是别人教我的,经理解后,贴出来于大家分享 ——html—— <script t ...
- 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)
一.标题:正则表示 正则表达式表示了串的某种规则或规律.恰当地使用正则表达式,可以使得代码简洁.事半功倍.java的很多API都支持正则表达式作为参数.其中的String.split就是这样. ...
- NOIP 2018 提高组初赛试题 题目+答案+简要解析
一.单项选择题(共 10 题,每题 2 分,共计 20 分: 每题有且仅有一个正确选项) 1. 下列四个不同进制的数中,与其它三项数值上不相等的是( ). A. (269) 16 B ...
- JAVASCRIPT试题及答案
1.用jQuery编程实现获取选中复选框值的函数abc. <body> <input type="checkbox" name="aa" va ...
随机推荐
- Flash与JavaScript互动
最近做的一个项目需要用javascript来实现自动复制文本到剪切板,但测试时发现只有ie6.0支持. 到百度搜索后才发现,原来ie7.0.firefox是不支持这样的操作的,随后又搜索了一下,找到一 ...
- 洛谷 P3951 小凯的疑惑(数学)
传送门:Problem P3951 https://www.cnblogs.com/violet-acmer/p/9827010.html 参考资料: [1]:http://m.blog.sina.c ...
- Code-force 1003 E Tree Constructing
E. T ...
- springboot整合freemarker
前后端分离现在越来越多,如何有效的使用springboot来整合我们的页面是一个很重要的问题. springboot整合freemarker有以下几个步骤,也总结下我所犯的错误: 1.加依赖: 2.配 ...
- MYCAT全局序列
1.本地文件方式 sequnceHandlerType = 0 /root/data/program/mycat/conf/server.xml <property name="s ...
- JAVA记录-Mybatis介绍
1.什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyB ...
- Log4net(一)-——配置文件
一.Log4Net框架介绍 Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.Log4net中定义了多种日志信息输出模式.它可以根据需要将日志输出到控制台,文本文件 ...
- 解决win10无线无故断网,重启才恢复正常的情况【原】
最初以为是路由器问题 ,但是别人电脑都好好的呀,而且我自己的手机也是好好的能正常上网,所以只能从自身电脑找问题了,目测就是无线网卡出问题了.经过一番百度,原来是win10自动开启了省模式,运行一段时间 ...
- 超详细设置Idea类注释模板和方法注释模板
网上找了一下,没有很详细且正确介绍Idea配置注释模板的,于是结合多篇文章自己琢磨整理出如下. 设置类注释模板 1.选择File–>Settings–>Editor–>File an ...
- form表单提交onclick和onsubmit
onsubmit只能表单上使用,提交表单前会触发, onclick是按钮等控件使用, 用来触发点击事件. 在提交表单前,一般都会进行数据验证,可以选择在submit按钮上的onclick中验证,也可以 ...