Foro

error en IE "Object doesn't support this property or method"

0
Hola a todos, tengo el sgte error y aun no logro determinar en que me estoy equivocando. Me arroja este error en la linea 6 de mi archivo contacto.js: [quote]Línea: 6 Caracter: 3 Código: 0 Mensaje de error: Object doesn't support this property or method URL: <!-- m -->http://servidor/mejoras/contacto.js<!-- m -->[/quote] mi archivo contacto.js es el sgte:
Ext.ns('contacto');
contacto.Form = {
	init:function(){
	
		formulario = new Ext.FormPanel({
			renderTo:'formulario',
			layout:'form',
			frame:false,
			baseCls: 'x-plain',
			bodyStyle:'padding: 10px',
			items:[{
			
				xtype:'textfield',
				fieldLabel:'Nombre'
			
			},{
			
				xtype:'textfield',
				fieldLabel:'Email'
			
			},{
			
				xtype:'textfield',
				fieldLabel:'Asunto'	
			
			},{
			
				xtype:'textarea',
				fieldLabel:'Mensaje'
			
			}],
			buttons:[{text:'Enviar'}]
		
		})
	
	
	}
};
Ext.onReady(contacto.Form.init,contacto.Form);
en FF con firebug no me arroja ningún error, alguna idea?? <!-- s:roll: --><!-- s:roll: --> gracias
0
y en firefox si puedes ver el formulario?? es que el error te esta diciendo que el objeto "Ext.FormPanel" no existe, y es cierto!! deberías tenerlo así "Ext.[b]form[/b].FormPanel", por eso te pregunto si en firefox si puedes ver el formulario ya que te no deberías verlo tampoco. saludos
0
en FF no me da problema, puedo verlo. de hecho originalmente era "Ext.form.FormPanel" e igualmente me arroja el error en IE, como en unos ejemplos lo vi escrito asi "Ext.FormPanel" pensé que lo tenia mal, pero de hecho lo muestra de las dos formas pero me arroja el error igual. <!-- s:roll: --><!-- s:roll: -->
0
tienes razón Ext.form.FormPanel = Ext.FormPanel; <!-- s:D --><!-- s:D --> ahora, para solucionar tu problema solamente agregale la palabra resesrvada "var" a la variable "formulario":
Ext.ns('contacto');
contacto.Form = {
   init:function(){
   
      var formulario = new Ext.FormPanel({ //<---- agrega "var"
         renderTo:'formulario',
         layout:'form',
         frame:false,
         baseCls: 'x-plain',
         bodyStyle:'padding: 10px',
         items:[{
         
            xtype:'textfield',
            fieldLabel:'Nombre'
         
         },{
         
            xtype:'textfield',
            fieldLabel:'Email'
         
         },{
         
            xtype:'textfield',
            fieldLabel:'Asunto'   
         
         },{
         
            xtype:'textarea',
            fieldLabel:'Mensaje'
         
         }],
         buttons:[{text:'Enviar'}]
      
      })
   
   
   }
};
Ext.onReady(contacto.Form.init,contacto.Form);
con eso te debería funcionar, o bien cambia el nombre de la variable que sea diferente de "formulario", esto es un problema de "scope" normalmente sucede cuando se sobreescriben variables, seguramente IE esta creando una variable "formulario" para el div en el contexto global, luego tu también creas una variable "formulario" en el contexto global, la pregunta es cual es cual, entonces a la hora de tu ejecutar algún método de tu objeto formulario, resulta que ya no existe, ahora hay otro "formulario". En fin, para evitar este tipo de situaciones siempre, siempre, siempre, siempre recomiendo utilizar correctamente el "namespace", en este caso tu si creaste un namespace, pero no lo estas usando con la variable formulario, recuerda que si no le antepones "var" simplemente se crea en el global scope y de nada sirve haber creado un namespace si no lo vas a utilizar. saludos
0
gracias!! como siempre muy acertado. <!-- s:D --><!-- s:D -->

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.