您的位置:首页 > Web前端 > HTML5

Web : 使用RGraph(HTML5)绘制折线图(二)

2012-07-30 09:45 155 查看
上文提到了showCheckBox(canvasId, jsonResult)

function showCheckBox(canvasId, jsonResult) {
j = 4;                                  // j为在div中插入的位置,div中依次为<span>,<br/>,<br/>,新增<br/>var parentItem = document.getElementById(canvasId).parentNode; // 获取到div
var spaceDiv = document.createElement("div");
spaceDiv.innerHTML = "<br/>";
parentItem.insertBefore(spaceDiv,parentItem.childNodes[3]);    // 新增<br/>到div
for (i = 0; i < jsonResult.length; i++) {
name = "cb" + (i + 1);
cb = document.createElement("input");
cb.type = "checkbox";
cb.id = name;
cb.checked = true;
cb.onclick = fReShowRGraph;                    // 添加onclick事件
cb.value = 1;
name = "lb" + (i + 1);
lb = document.createElement("label");
lb.id = name;
lb.innerHTML = jsonResult[i].DataTitle;
parentItem.insertBefore(cb, parentItem.childNodes[j++]);   // 插入checkbox
parentItem.insertBefore(lb, parentItem.childNodes[j++]);   // 插入label
}

showRGraph(canvasId, jsonResult, null);
}


function fReShowRGraph() {
id = arguments[0].target.id;                      // 获取checkbox id
var cb = document.getElementById(id);                 
  // 是否勾选
if (cb.value == 1) {
cb.checked = false;
cb.value = 0;
}
else if (cb.value == 0) {
cb.checked = true;
cb.value = 1;
}
var div = arguments[0].target.parentElement;            // 由于div id依次为div1,div2...line id也为line1,line2...故通过div的index值找到是哪个line
index = div.id.substring(3);
var datas = eval("line" + index + "JsonObj");            // eval(obj)
var sourceDatas = new Array();                     // 若无此行,每次datas改变会影响源数据,导致只能越变越少,而不是从头再来
var colorIndexs = new Array();                     // 颜色数组,保存线条颜色
for (var i = 0; i < datas.length; i++) {
name = "cb" + (i + 1);
try {
if (document.getElementById(name).value == 1) {
sourceDatas.push(datas[i]);
colorIndexs.push(i);
}
}
catch (e) {

}
}
lineId = "line" + index;
line = document.getElementById(lineId);

showRGraph(lineId, sourceDatas, colorIndexs);
}


显然其中showGRaph(canvasId, jsonResult, colorIndexs)是关键,上述第一段代码向每个div插入checkBox而已,值得注意的是插入位置的选取,以及value值决定checkBox是否勾选(汗,年少无知),另外给checkBox设置了onclick事件,具体的即为第二段代码

第二段代码中eval()函数是一个强大的功能(又一次年少无知),详细介绍可参见http://www.w3school.com.cn/js/jsref_eval.asp, 上述第二段代码中eval使用基于反射机制,获取到一个json对象

你懂得,下次详细介绍showRGraph(canvasId, jsonResult, colorIndexs)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: