Javascript . (至少以我目前的技能水平)

Javascript . (至少以我目前的技能水平),javascript,chart.js,Javascript,Chart.js,除了ajax注入和JavaScript代码注入之外,下面是我要做的。我在变量中有这些值: cu = 3; py = 5; fs = 7; qz = 9; ch = 11; am = 13; mi = 15; mo = 17; 我必须创建一个数组,它是部分文本/部分变量(我认为…)。所以,我试过这个: pDat = ['{value:'+cu+'}, {value:'+py+'}, {value:'+fs+'}, {value:'+qz+'}, {value:'+ch+'}, {value:'+

除了ajax注入和JavaScript代码注入之外,下面是我要做的。我在变量中有这些值:

cu = 3;
py = 5;
fs = 7;
qz = 9;
ch = 11;
am = 13;
mi = 15;
mo = 17;
我必须创建一个数组,它是部分文本/部分变量(我认为…)。所以,我试过这个:

pDat = ['{value:'+cu+'}, {value:'+py+'}, {value:'+fs+'}, {value:'+qz+'}, {value:'+ch+'}, {value:'+am+'}, {value:'+mi+'}, {value:'+mo+'}'];
那没用。所以我试着:

eval('pDat = [{value:'+cu+'}, {value:'+py+'}, {value:'+fs+'}, {value:'+qz+'}, {value:'+ch+'}, {value:'+am+'}, {value:'+mi+'}, {value:'+mo+'}']');
这对数组有效,但对对象无效

在Vohuman、guest271314、epascarello和其他善良灵魂的良好建议下,我回到绘图板并重构代码,以便我可以这样做:

(它适用于所有方面——我甚至能够添加带有颜色代码的变量):



为什么要使用eval?只需构建对象!你为什么认为你必须用eval来做这件事?如果有其他的方法,我就用它。但是,我没有成功地将字符串连接到对象中。为了让事情变得更加困难,所有javascript本身都作为字符串被放在页面上。有时我认为我应该选择一个更容易的职业,比如儿科脑外科手术或发明N维量子力学。如果响应是字符串,那么该字符串可能是JSON,JSON是结构的字符串表示,在这种情况下,你应该使用
JSON.parse
方法解析字符串。你想做的是疯狂。它非常脆弱,容易出错,而且是反模式的。当您在JSFIDLE中包含外部资源时,直接使用github链接是个坏主意。Github为其原始文件提供mime类型text/plain。有些web浏览器相当合理地拒绝将其解释为javascript文件,因为它不是application/javascript。尝试使用引用这些,为什么要使用eval?只需构建对象!你为什么认为你必须用eval来做这件事?如果有其他的方法,我就用它。但是,我没有成功地将字符串连接到对象中。为了让事情变得更加困难,所有javascript本身都作为字符串被放在页面上。有时我认为我应该选择一个更容易的职业,比如儿科脑外科手术或发明N维量子力学。如果响应是字符串,那么该字符串可能是JSON,JSON是结构的字符串表示,在这种情况下,你应该使用
JSON.parse
方法解析字符串。你想做的是疯狂。它非常脆弱,容易出错,而且是反模式的。当您在JSFIDLE中包含外部资源时,直接使用github链接是个坏主意。Github为其原始文件提供mime类型text/plain。有些web浏览器相当合理地拒绝将其解释为javascript文件,因为它不是application/javascript。试着用这些来代替。我知道做不寻常的事情很有趣,但这确实是不必要的。这实际上毫无意义。@Vohuman要求似乎包括“我必须从文本字符串构建数组和对象”。不确定如何评估流程是否“合理”?许多错误、失误和失误导致了新的发展,甚至启蒙运动?这是创造性的。我说这没有意义,因为它使过程变得不必要的复杂。我希望这对他/她有帮助。先生们,你们的两个建议都帮了大忙(而且他是一个真正的他)。我同时缺乏经验、培训和榜样。你的建议/例子帮助我解决了这个问题。当我达到足够的禅宗谦卑来发布有用的东西时,你可能需要腰带来防止身体两侧裂开。(笑声…)我知道做不寻常的事情很有趣,但这真的没有必要。这实际上毫无意义。@Vohuman要求似乎包括“我必须从文本字符串构建数组和对象”。不确定如何评估流程是否“合理”?许多错误、失误和失误导致了新的发展,甚至启蒙运动?这是创造性的。我说这没有意义,因为它使过程变得不必要的复杂。我希望这对他/她有帮助。先生们,你们的两个建议都帮了大忙(而且他是一个真正的他)。我同时缺乏经验、培训和榜样。你的建议/例子帮助我解决了这个问题。当我达到足够的禅宗谦卑来发布有用的东西时,你可能需要腰带来防止身体两侧裂开。(笑声…)谢谢。你们真的让我思考。为什么说唱歌手和舞蹈家戴着头巾,而美国的编码员有时觉得有必要在我们的头上包上东西,因为他们即将与我们所要解决的概念爆发?另一方面,可能只是因为我没有那么聪明。我对这种可能性持开放态度。。。在今晚这样的夜晚,感觉更像是一种可能性。。。谢谢你的帮助和建议。谢谢。你们真的让我思考。为什么说唱歌手和舞蹈家戴着头巾,而美国的编码员有时觉得有必要在我们的头上包上东西,因为他们即将与我们所要解决的概念爆发?另一方面,可能只是因为我没有那么聪明。我对这种可能性持开放态度。。。在今晚这样的夜晚,感觉更像是一种可能性。。。谢谢你的帮助和建议。
var s1 = {value:25, color:"red"};
var s2 = {value:5, color:"blue"};
var s3 = {value:25, color:"palegreen"};
var s4 = {value:10, color:"darkcyan"};
var s5 = {value:35, color:"wheat"};
var pieData = [ s1, s2, s3, s4, s5 ];
cu = 3;
py = 5;
fs = 7;
qz = 9;
ch = 11;
am = 13;
mi = 15;
mo = 17;
pDat = ['{value:'+cu+'}, {value:'+py+'}, {value:'+fs+'}, {value:'+qz+'}, {value:'+ch+'}, {value:'+am+'}, {value:'+mi+'}, {value:'+mo+'}'];
eval('pDat = [{value:'+cu+'}, {value:'+py+'}, {value:'+fs+'}, {value:'+qz+'}, {value:'+ch+'}, {value:'+am+'}, {value:'+mi+'}, {value:'+mo+'}']');
pDat = [{value:cu, color:CuCol}, {value:py, color:PyCol}, {value:fs, color:FsCol}, {value:qz, color:QzCol}, {value:ch, color:ChCol}, {value:am, color:AmCol}, {value:mi, color:MiCol}, {value:mo, color:MOCol}];

oOpt = {
    annotateDisplay : true,
    segmentShowStroke : false,
    segmentStrokeColor : "white",
    segmentStrokeWidth : 1,
    percentageInnerCutout : 0,
    animation: false,
    animationSteps : 100,
    animationEasing : "easeOutQuart",
    animateRotate : true,
    animateScale : false,
    legendTemplate : '<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'
};

var ctx = document.getElementById("pieChart").getContext("2d");
updateChart(ctx,pDat,pOpt,true,false);
CuCol = '#ffe382';
PyCol = '#1bb3a5';
etc