我想用一个颜色填充画布,该颜色是对象内部的数组元素,元素索引应该是 i 但代码似乎是错误的。 color1 中的变量已经声明,并且包含一个字符串,该字符串是颜色的十六进制值。
var colorsObj = {
color1: [orange,amber,apricot,tangerine,bittersweet,persimmon,salmon,peach,pumpkin]
}
function drawCanvas(color) {
for(var i = 1; i < 10; i++){
$('.app').append('<canvas class="shadescolors" id="shade'+i+'" width="100" height="100">');
var canvas = document.getElementById('shade'+i);
var context = canvas.getContext('2d');
canvas.width = window.innerWidth / 3;
cc = canvas.width;
radius = cc/2-10;
canvas.height = canvas.width;
context.beginPath();
context.arc(cc/2, cc/2, cc/2-10, 0, Math.PI*2, true);
alert(colorsObj.color[i]);
context.fillStyle = colorsObj.color[i];
context.fill();
context.lineWidth = 2;
context.strokeStyle = '#8A8A8A';
context.stroke();
}
}
drawCanvas('color1');
警报也不会触发。
答案 0 :(得分:3)
这里的主要问题是您需要使用colorObj[color]
来访问您的颜色列表而不是colorObj.color
,因为您想要使用{{的值 1}}变量,用于选择color
中的特定颜色列表。 (我假设您稍后可能会在colorObj
内有color2
个条目,等等,对吗?)
你也错过了颜色列表的第一个元素,开始使用colorObj
循环,1
循环限制应该使用颜色列表的10
而不是硬编码。
你在循环中的几个变量上错过.length
,因为你将var
,cc
和canvas.width
都设置为相同的值你可以在一个声明中做所有这些。
作为简化提示,您无需为canvas.height
元素提供顺序ID,并使用canvas
进行查找。相反,您可以在创建元素时保存对元素的引用,并使用它。
我还在getElementById()
元素的HTML代码中删除了width=
和height=
;它们是多余的,因为您在代码中设置宽度和高度。
最后,请缩进您的代码! : - )
所以你可以尝试这样的事情:
canvas
答案 1 :(得分:0)
color1数组字符串或其他变量中的值是?如果它们是字符串,则应该是:
[[int,int],[int]]
记住数组中的第一个元素有索引0,所以为了修复你的for循环,我会这样做:
cimport cython
import numpy as np
cimport numpy as np
import pandas as pd
offcat = [
"breakingPeace",
"damage",
"deception",
"kill",
"miscellaneous",
"royalOffences",
"sexual",
"theft",
"violentTheft"
]
def partitionAIC(EmpFrame, part, OffenceEstimateFrame, ReturnDeathEstimate=False):
"""EmpFrame is DataFrame of ints, part is nested list of ints, OffenceEstimate frame is DF of float"""
"""partOf/block is a list of ints"""
"""ll, AIC, is series/frame of floats"""
##Cython cdefs
cdef int DFlen
cdef int puns
cdef int DeathPun
cdef int k
cdef int pId
cdef int punish
DFlen = EmpFrame.shape[1]
puns = 2
DeathPun = 0
PartitionModel = pd.DataFrame(index = EmpFrame.index, columns = EmpFrame.columns)
for partOf in part:
Grouping = [puns*x + y for x in partOf for y in list(range(0,puns))]
PartGroupSum = EmpFrame.iloc[:,Grouping].sum(axis=1)
for punish in range(0,puns):
PunishGroup = [x*puns+punish for x in partOf]
punishPunishment = ((EmpFrame.iloc[:,PunishGroup].sum(axis = 1) + 1/puns).div(PartGroupSum+1)).values[np.newaxis].T
PartitionModel.iloc[:,PunishGroup] = punishPunishment
PartitionModel = PartitionModel*OffenceEstimateFrame
if ReturnDeathEstimate:
DeathProbFrame = pd.DataFrame([[part]], index=EmpFrame.index, columns=['Partition'])
for pId,block in enumerate(part):
DeathProbFrame[pId] = PartitionModel.iloc[:,block[::puns]].sum(axis=1)
DeathProbFrame = DeathProbFrame.apply(lambda row: sorted( [ [format("%6.5f"%row[idx])]+[offcat[X] for X in x ]
for idx,x in enumerate(row['Partition'])],
key=lambda x: x[0], reverse=True),axis=1)
ll = (EmpFrame*np.log(PartitionModel.convert_objects(convert_numeric=True))).sum(axis=1)
k = (len(part))*(puns-1)
AIC = 2*k-2*ll
if ReturnDeathEstimate:
return AIC, DeathProbFrame
else:
return AIC
您的警告声明中也有一个错误,您使用的是color1: ['orange','amber','apricot','tangerine','bittersweet','persimmon','salmon','peach','pumpkin']
而不是for(var i = 0; i < colorsObj.color1.length; i++)
(color1,而不是颜色)