2013-06-23 35 views
1

在'谷歌腳本',觸發事件(按鈕單擊)時,我試圖改變名稱以及文本框的ID。以下是簡化代碼:谷歌應用腳​​本中的setName和setId

function addRow(e){ 
     var app = UiApp.getActiveApplication(); 
     app.getElementById('tbox') 
     .setId('txt1') 
     .setName('txt1'); 
    } 

現在,setId正在工作,但setName卻拋出了一個錯誤。有什麼我明顯失蹤的?

+0

什麼是錯誤? – Srik

+0

錯誤是:'遇到錯誤:發生意外錯誤' – Ram

+0

似乎沒有意義更改dom項目的ID或名稱。你爲什麼想這麼做?奇怪。 –

回答

0

從快速測試我確實似乎是,雖然如果單獨使用,它不會拋出一個錯誤,這是不可能改變的元素的ID,如在這個小測試:

function doGet() { 
    var app = UiApp.createApplication().setTitle('Button Test'); 
    return app.add(app.createTextBox().setId('tbox').setName('tbox').setText('tbox') 
       .addKeyPressHandler(app.createServerHandler('inspectBox'))).add(
    app.createButton('Change').addClickHandler(app.createServerHandler('btnClick'))); 
} 

function inspectBox(e) { 
    var p = e.parameter; 
    var app = UiApp.getActiveApplication(); 
    return app.add(app.createLabel('id: '+p.source)).add(
    app.createLabel('name: '+(p.tbox ? 'tbox' : p.txt1 ? 'txt1' : 'not found'))); 
} 

function btnClick() { 
    var app = UiApp.getActiveApplication(); 
    app.getElementById('tbox').setId('txt1'); 
    //app.getElementById('tbox').setName('txt1'); 
    return app; 
} 

後來,如果你評論setId行並取消註釋setName,然後在文本框中鍵入一個字符,你會看到名稱改變。如果使用例如setText繼續處理元素,則setName調用將正常工作。對於setId來說這不是真的,如果你在元素上嘗試任何東西,那就失敗了。

無論如何,正如其他人所評論的,你有這樣的要求確實很奇怪。我想你應該找到另一種方式(可能更好)來做你想做的事(你沒有描述過)。

+0

是的,如果我用setName取消註釋,它也適用於我的情況。我想我必須找到解決辦法。 – Ram

+0

@Ram是我想這是一個無證的限制:「不能改變已經在屏幕上的元素的ID」。而且,由於您是Stackoverflow中的新成員,因此您應該在您認爲自己有良好的答案時將答案標記爲已接受。這是投票箭頭附近的複選標記(另一個不錯的功能)。 –

+0

謝謝。我做到了 – Ram