我试图使用以下方法创建一个对象数组:
var tax_data = new Array();
for (var i =0; i < ${Dates.size()}; i++) {
tax_data.push({
"period": "${Dates[i]}",
"Poids": ${WeightMesures[Dates[i]]},
"Nombre de pas": ${WalkingMesures[Dates[i]]},
"Pulsation": ${BpMesures[Dates[i]]}
});
}
但这不起作用。
是否有其他方法可以将元素放入此数组中?
答案 0 :(得分:2)
您似乎正在混合使用JavaScript进行迭代并在模板引擎中进行迭代。从${Dates[i]}
开始,您希望i
成为模板中的变量,但您已在生成的JavaScript中将其声明为变量。
像(未经测试的)
var tax_data = new Array();
<c:forEach begin="1" end="Dates.size()" var="i">
tax_data.push({"period": "${Dates[i]}", "Poids": ${WeightMesures[Dates[i]]}, "Nombre de pas": ${WalkingMesures[Dates[i]]}, "Pulsation": ${BpMesures[Dates[i]]} }) ;
</c:forEach>
应该为JavaScript中的每个日期生成一行
var tax_data = new Array();
tax_data.push({"period": "2014-01-01", "Poids": 32, ... }) ;
tax_data.push({"period": "2014-02-01", "Poids": 32, ... }) ;
tax_data.push({"period": "2014-02-01", "Poids": 32, ... }) ;
没有一种简单的方法可以让生成的JavaScript引用然后使用Dates表而不直接写出它的每一行,或者响应单独的ajax请求。
答案 1 :(得分:0)
首先将数据传递给JavaScript变量,然后使用本地变量运行循环:
var taxData = [],
index = 0,
dates = ${Dates},
weightMesures = ${WeightMesures},
walkingMesures = ${WalkingMesures},
bpMesures = ${BpMesures},
length = dates.length();
for (index; index < length}; index += 1) {
taxData.push({
"period": dates[i],
"Poids": weightMesures[dates[i]],
"Nombre de pas": walkingMesures[dates[i]],
"Pulsation": bpMesures[dates[i]]
});
}
答案 2 :(得分:0)
我同意皮特的意见 我建议你在vanilla中创建一个Json数组并再次编写vanilla以在循环中检索属性 因此,您将检查它是否适用于JavaScript 将JSP(或其他模板语言)与客户端JavaScript混合是一种糟糕的模式。您宁愿让servlet将Json Array推向客户端页面,然后使用纯JavaScript解析Json
答案 3 :(得分:-1)
尝试这个假设你想循环通过Dates.size
var tax_data = [];
for (var i =0 ;i< ${Dates.size()}; i++) {
tax_data.push({"period": "${Dates[i]}", "Poids": ${WeightMesures[Dates[i]]}, "Nombre de pas": ${WalkingMesures[Dates[i]]}, "Pulsation": ${BpMesures[Dates[i]]} }) ;
}