Error inesperado de secuencia de comandos de Google Apps

Escribí un formulario, pero ahora aparece un error inesperado.

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;
}

Ya me di cuenta de que no me sale un error cuando comento la línea app.getElementById('outro').setVisible(false); en la función empezar de nuevo()

Alguien que sepa lo que estoy haciendo mal?

preguntado el 22 de mayo de 12 a las 16:05

Dado su último comentario, no creo que el elemento con Id de 'outro' exista o no tenga la función setVisible(); Esa ha sido mi experiencia. -

La app.getElementById('startAgain').setVisible(false); es la línea extraña para mí. No veo ningún elemento identificado startAgain. ¿Estás seguro de que no es la línea ofensiva? -

1 Respuestas

Acabo de probar su código exacto y funciona aquí como se esperaba... Para fines de prueba, creé una función showCompletePage() que muestra otra interfaz de usuario y puedo cambiar de una a otra... Entonces, ¿quizás el error se encuentra en otro lugar? en la parte showCompletePage?

aquí está el código de prueba, su parte no ha cambiado:

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;
}

contestado el 22 de mayo de 12 a las 17:05

Siguiendo el comentario de Henrique, volví a probar mi código de prueba y genera un error (extrañamente, no lo hizo la primera vez). Como de costumbre, Henrique tiene razón, la línea defectuosa en mi código de prueba es app.getElementById('startAgain').setVisible(false); perdón por no haberlo señalado. - serge insas

También creo que no es realmente una buena idea llamar a buildUI(); en su función de controlador 'comenzar de nuevo' ya que vuelve a crear la interfaz de usuario por completo ... sería más eficiente restaurar la existente o usar un proceso de mostrar/ocultar (vea este hilo:stackoverflow.com/questions/10564565/… ) - serge insas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.