我正在开发一个构建powerpoint幻灯片的javascript程序。我遇到了动态添加元素到数组(最终成为文本框中的文本)的问题。如果我明确地编写文本代码,一切正常......这段代码运行正常...
slide.addText(
[ { text: "Bob0", options: {align:'left', color:'757575', font_face: 'Calibri', font_size:9}} ,
{ text: "Bob1", options: {align:'left', color:'757575', font_face: 'Calibri', font_size:9}} ,
{ text: "Bob2", options: {align:'left', color:'757575', font_face: 'Calibri', font_size:9}} ,
{ text: "Bob3", options: {align:'left', color:'757575', font_face: 'Calibri', font_size:9}} ,
{ text: "Bob4", options: {align:'left', color:'757575', font_face: 'Calibri', font_size:9}}
],
{shape:pptx.shapes.ROUNDED_RECTANGLE, x:0.33, y:2,w:1.25,h:1.33, line:'757575', line_size:0.5, fill:'FFFFFF', valign:'top', color:'FFFFFF', font_face:'Calibri Light', font_size:10}
);
此代码在圆角矩形内打印5行文本(Bob0 ... Bob4)。我需要做的是动态构建这些行。可能只有一行,可能有30行,但它们都具有完全相同的格式,唯一的区别是TEXT属性不同。所以我尝试动态构建数组并访问它。
var arrCRM=[];
..
for (var i = 0; i < 5; i++) {
var thisRow = {};
thisRow["text"] = "Bob" + i;
thisRow["options"] = {align:'left', color:'757575', font_face: 'Calibri', font_size:9};
arrCRM.push(thisRow);
}; //end of for loop
这让我非常接近。我现在需要能够将arrCRM放在addText例程中。
slide.addText(
[ arrCRM
],
{shape:pptx.shapes.ROUNDED_RECTANGLE, x:0.33, y:2,w:1.25,h:1.33, line:'757575', line_size:0.5, fill:'FFFFFF', valign:'top', color:'FFFFFF', font_face:'Calibri Light', font_size:10}
);
这在我的代码后面给了我一个完全不相关的错误,所以我知道我做错了什么。然而,这有效...
slide.addText(
[ arrCRM[0],
arrCRM[1],
arrCRM[2],
arrCRM[3],
arrCRM[4]
],
{shape:pptx.shapes.ROUNDED_RECTANGLE, x:0.33, y:2,w:1.25,h:1.33, line:'757575', line_size:0.5, fill:'FFFFFF', valign:'top', color:'FFFFFF', font_face:'Calibri Light', font_size:10}
);
我如何&#34;插件&#34;整个数组,因为数组中的元素数量会有所不同......?
答案 0 :(得分:1)
您正在调用addText([ arrCRM ])
,其中将arrCRM
的值添加为新数组中的单个项目,然后将其发送到addText
。< / p>
为简化起见,这就像在函数期待[[ 1, 2, 3, 4 ]]
时发送[ 1, 2, 3, 4 ]
一样。
您可能正在寻找的是直接使用您的阵列调用该函数:
slide.addText(arrCRM, {
shape: pptx.shapes.ROUNDED_RECTANGLE,
x: 0.33,
y: 2,
w: 1.25,
h: 1.33,
line: '757575',
line_size: 0.5,
fill: 'FFFFFF',
valign: 'top',
color: 'FFFFFF',
font_face: 'Calibri Light',
font_size: 10
});