2015-11-04 65 views
0

不可編輯,我寫在谷歌Apps腳本在小腳本,創建一個數組,而當你按下一個按鈕,就應該加上「試驗」到數組,然後打印整個陣列。所以,當你按下按鈕,第一次它應該顯示1「測試」。當按它第二次它應該顯示第一測試加上新的數組,其應該包含2「測試」,所以總共3「測試」。但事實並非如此。不知怎的,當它熄滅功能「buttonPress」全陣列將被刪除或東西。有人可以解釋這個嗎?謝謝!谷歌Apps腳本全局陣列中的功能

var list = new Array; 
function doGet() { 
    var app = UiApp.createApplication() 
    var panel = app.createVerticalPanel().setId('id') 
    var button = app.createButton('Button') 
    var handler = app.createServerHandler('buttonPress') 
    button.addClickHandler(handler) 
    app.add(panel) 
    panel.add(button) 
    return app; 
} 
function buttonPress(){ 
list.push('test') 
var app = UiApp.getActiveApplication() 
var panel = app.getElementById('id') 
var panel2 = app.createVerticalPanel() 
var length = list.length 
for(var i = 0; i< length; i++){ 
panel2.add(app.createHTML(list[i])) 
} 
} 

回答

1

GAS是不是你的日常使用Javascript,每次你打buttonPress,整個代碼被編譯,然後執行,通過閱讀這你已經想通,list被重新實例化一個空數組。

2旁註:

了UiApp已被棄用,你必須切換到HTMLService。

陣列在Javascript如[]更好的初始化。這是所有文件中的首選方式。

0

簡單地把你的功能buttonPress()不知道什麼list即使你沒有在函數調用中聲明或定義它。

如果代碼是你正在運行我會注意到,var list = new Array;在乞討是不被任何的功能到達的確切的事情。

如果您願意,可以使用PropertiesService.getScriptProperties().setProperty('name',string)PropertiesService.getScriptProperties().getProperty('name')通過使用JSON.stringify()方法和JSON.parse()來返回數組來存儲數組。