2012-05-22 6 views
0

양식을 작성했지만 예기치 않은 오류가 발생합니다.예기치 않은 오류 Google Apps Script

function showCompletePage(){ 
    var app = UiApp.getActiveApplication(); 
    app.getElementById('rightPanel').setVisible(false); 
    var pnl = app.createVerticalPanel().setId('outro'); 
    var text = "<p>Uw aanvraag is met succes verwerkt.</p>"; 
    text += "<p>U zal zo meteen een offerte ontvangen via mail.<br />Verzeker u ervan dat de mail niet in uw spam toegekomen is.</p>"; 
    text += "<p>Gelieve de offerte binnen de drie dagen terug te sturen, zodat uw reservatie definitief bevestigd kan worden.</p>"; 
    pnl.add(app.createHTML(text).setId('final')); 

    var el = app.createButton('Klik hier indien u nog een opleiding wil reserveren').setId('anotherOne'); 
    el.addClickHandler(app.createServerHandler("startAgain")); 
    app.add(pnl); 
    app.add(el); 

    return app; 
} 

function startAgain(e){ 
    Logger.log('restart'); 
    var app = UiApp.getActiveApplication(); 
    app.getElementById('startAgain').setVisible(false); 
    app.getElementById('outro').setVisible(false); 
    buildUI(); 

    return app; 
} 

난 함수 startAgain의 라인 app.getElementById('outro').setVisible(false); 을 언급 할 때 이미 내가 오류가 발생하지 않는 것을 알아 냈()

내가 잘못 뭘하는지 아는 사람?

+0

, 나는) (존재하거나 함수로 setVisible이없는 '아웃트로'의 id를 가진 요소를 생각하지 않는다; 그게 내 경험 이었어. – mzimmerman

+0

'app.getElementById ('startAgain'). setVisible (false);'는 저에게 이상한 라인입니다. id'ed 'startAgain' 요소가 보이지 않습니다. 그게 문제가되는 라인이 아닌가? –

답변

1

방금 ​​정확한 코드를 테스트했으며 예상대로 작동합니다. 테스트 목적으로 다른 UI를 보여주는 showCompletePage() 함수를 만들었고 다른 하나의 UI로 전환 할 수 있습니다 ... 아마도 오류가 다른 곳에 있습니까? showCompletePage 부분에 있습니까? 여기

테스트 코드, 당신의 부분은 변경되지 않습니다 : 당신의 마지막 코멘트를 감안할 때

function buildUI() { 
    var app = UiApp.createApplication().setHeight(130).setWidth(400); 
    app.setTitle("Search by name/lastname/adress"); 
    var panel = app.createVerticalPanel().setId('rightPanel'); 
    var txtBox = app.createTextBox(); 
    var label=app.createLabel(" Item to search for :") 
    panel.add(label); 
    txtBox.setId("item").setName("item"); 
    var label0=app.createLabel("Row").setWidth("40"); 
    var label1=app.createLabel("Name").setWidth("120"); 
    var label2=app.createLabel("Lastname").setWidth("120"); 
    var label3=app.createLabel("Street").setWidth("120"); 
    var hpanel = app.createHorizontalPanel(); 
    hpanel.add(label0).add(label1).add(label2).add(label3) 
// 
    var txt0=app.createTextBox().setId("lab0").setName("0").setWidth("40"); 
    var txt1=app.createTextBox().setId("lab1").setName("txt1").setWidth("120"); 
    var txt2=app.createTextBox().setId("lab2").setName("txt2").setWidth("120"); 
    var txt3=app.createTextBox().setId("lab3").setName("txt3").setWidth("120"); 
    var hpanel2 = app.createHorizontalPanel(); 
    hpanel2.add(txt0).add(txt1).add(txt2).add(txt3) 
    var hidden = app.createHidden().setName("hidden").setId("hidden"); 
    var subbtn = app.createButton("next ?").setId("next").setWidth("250"); 
    panel.add(txtBox); 
    panel.add(subbtn); 
    panel.add(hidden); 
    panel.add(hpanel); 
    panel.add(hpanel2); 
// 
    var submitHandler = app.createServerHandler("showCompletePage"); 
    subbtn.addClickHandler(submitHandler); 
    submitHandler.addCallbackElement(panel); 
// 
    app.add(panel); 
    ss.show(app); 
    } 
// 
function showCompletePage(){ 
    var app = UiApp.getActiveApplication(); 
    app.getElementById('rightPanel').setVisible(false); 
    var pnl = app.createVerticalPanel().setId('outro'); 
    var text = "<p>Uw aanvraag is met succes verwerkt.</p>"; 
    text += "<p>U zal zo meteen een offerte ontvangen via mail.<br />Verzeker u ervan dat de mail niet in uw spam toegekomen is.</p>"; 
    text += "<p>Gelieve de offerte binnen de drie dagen terug te sturen, zodat uw reservatie definitief bevestigd kan worden.</p>"; 
    pnl.add(app.createHTML(text).setId('final')); 

    var el = app.createButton('Klik hier indien u nog een opleiding wil reserveren').setId('anotherOne'); 
    el.addClickHandler(app.createServerHandler("startAgain")); 
    app.add(pnl); 
    app.add(el); 

    return app; 
} 

function startAgain(e){ 
    Logger.log('restart'); 
    var app = UiApp.getActiveApplication(); 
    app.getElementById('startAgain').setVisible(false); 
    app.getElementById('outro').setVisible(false); 
    buildUI(); 

    return app; 
} 
+0

Henrique의 의견에 따라 테스트 코드를 다시 테스트했는데 오류가 발생합니다 (처음에는 이상하지 않았습니다). 평소처럼 Henrique가 옳았는데, 내 테스트 코드에서 오류가있는 줄은 app.getElementById ('startAgain')입니다. 그것을 지적하지 않아서 미안해. –

+0

또한 buildUI()를 호출하는 것이 좋습니다. UI를 완전히 다시 생성 할 때 처리기 함수 'start again'에서 ... 기존 프로세스를 복원하거나 표시/숨기기 프로세스를 사용하는 것이 더 효율적입니다 (이 스레드 참조) : http : //stackoverflow.com/questions/10564565/사용자 확인 화면에서/10572034 # 10572034) –

관련 문제