Foros del Web » Programando para Internet » Javascript »

crear botones para un objeto

Estas en el tema de crear botones para un objeto en el foro de Javascript en Foros del Web. estoy metiendome en el tema de prototipos con javascript y ando un poco perdido en un punto, el codigo es este Código: <script> var wysi=function(target){ ...
  #1 (permalink)  
Antiguo 17/01/2013, 01:47
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
crear botones para un objeto

estoy metiendome en el tema de prototipos con javascript y ando un poco perdido en un punto, el codigo es este

Código:
<script>
var wysi=function(target){
	this.editor;
	this.tgt=new String(target);
	this.$=function(id){
		return document.getElementById(id); 
	}
	//Generacion del editor y sus componentes
	this.$(this.tgt).innerHTML='<input type="button" id="'+this.tgt+'bold"/><br /> '+
'<iframe id="'+this.tgt+'ifr" width="100%" height="300" style=" border:1px solid #000;"></iframe>';
	this.editor=this.$(this.tgt+'ifr').contentDocument || this.$(this.tgt+'ifr').contentWindow.document; 
    this.editor.designMode='on'; 
	//Asignacion de funciones de los botones
	this.botBold=this.$(this.tgt+'bold');
	this.botBold.onmouseup=function(){ed1.editor.execCommand('bold', false, null)};
	
}

var ed1;
window.onload=function(){ 
    ed1=new wysi('wys');
} 
</script>
lo que trato de solventar es este punto
this.botBold.onmouseup=function(){ed1.editor.execC ommand('bold', false, null)};
pero bien, eso de meter ed1 dentro de la clase funciona pero no debe ser asi y no logro saber como preguntarle a google como se hace ese punto en concreto

Última edición por juanito1712; 17/01/2013 a las 03:32
  #2 (permalink)  
Antiguo 17/01/2013, 11:59
Avatar de rosonator  
Fecha de Ingreso: noviembre-2012
Ubicación: Bilbao
Mensajes: 49
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: crear botones para un objeto

no conozco ese execommand, ni entiendo bien tu código, pero sí sé que en CSS el bold va así: "font-weight: bold", así que por qué no pruebas con:

his.botBold.onmouseup=function(){ed1.editor.style. fontWeight = "bold";};
  #3 (permalink)  
Antiguo 17/01/2013, 19:37
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: crear botones para un objeto

no a ver, el código funciona "perfectamente" y hace lo que tiene que hacer, pero no es correcto ya que en la misma clase estoy introduciendo la variable de una instancia y así no mola esto
  #4 (permalink)  
Antiguo 17/01/2013, 20:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: crear botones para un objeto

Una opción es crear una closure:
Código Javascript:
Ver original
  1. this.botBold.onmouseup = (function(obj) {
  2.     return function(){ obj.editor.execCommand('bold', false, null); };
  3. )(this);
Otra opción es guardar la referencia al editor en una propiedad del elemento.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 17/01/2013, 20:33
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: crear botones para un objeto

lo habia arreglado con la segunda opcion pero tengo que ir enviando parámetros arriba y abajo desde el principio hasta el final y no me terminaba de gustar.

Lo del closure me gusta mas oye

muchisimas grcias
  #6 (permalink)  
Antiguo 17/01/2013, 21:16
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: crear botones para un objeto

otra pregunta, ¿te parece que en mi código hay una sobrecarga de this o eso es normal?
es que al farolear componentes que he ido descargando para ver como funciona esto no me suena ver tanto this por ahi metido y aquí como se me ocurra quitar alguno saltan errores a cada linea

Etiquetas: botones, html, objeto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:42.