Javascript - 添加到数组的问题

时间:2017-11-02 20:02:19

标签: javascript arrays

我正在开发一个构建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;整个数组,因为数组中的元素数量会有所不同......?

1 个答案:

答案 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
});