Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Editor de texto</title> <meta name="GENERATOR" content="Quanta Plus"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style type="text/css"> div{ text-align:left; margin:auto; width:95%; height:200px; border:2px silver solid; } </style> <script language="JavaScript" type="text/javascript"> function createControls( editableDiv ){ //Crea un div con controles para el div editable exactamente después del div Editable //Cada boton tiene un id conforma ("editableDivControl"+[tag del elemento HTML correspondiente al control]) ej: "editableDivControlh1" //editableDivControlB function onclickEditableDivControl( ){ //Modifica el objeto window.editableDivNamespace.action asignándole la acción correspondiente al boton en cuestión, y deja dicho botón activado o desactivado según sea necesario; //newButton definida fuera de la función var button=newButton; //Modifico el objeto y obtengo la propiedad que contenía antes if( !window.editableDivNamespace ){ window.editableDivNamespace=new Object; window.editableDivNamespace.action=button.value; //Estilo de un boton presionado button.style.background="#888"; }else if( !window.editableDivNamespace.action ){ window.editableDivNamespace.action=button.value; //Estilo de un boton presionado button.style.background="#888"; }else if( window.editableDivNamespace.action==button.value ){ releasedButton=window.editableDivNamespace.action; window.editableDivNamespace.action=""; //Estilo de un boton libre button.style.background="#ccc"; }else{ releasedButton=window.editableDivNamespace.action; window.editableDivNamespace.action=button.value; //Estilo de un boton presionado button.style.background="#888"; //Estilo de un boton libre document.getElementById( "editableDivControl"+window.editableDivNamespace.action ).style.background="#ccc"; } } //matriz que contien los elementos correspondientes a los botones, para ind par ind=(Nombre del botón), ind+1=(value del botón) var buttonsElements=new Array( "Negrita","b" , "Itálica","i" , "Emfásis" , "em" ); //Elemento que contendrá los botones de control var controlsDiv=document.createElement( "div" ); //Recorro la matriz buttonsElements creando botones y agregandolos al div controlsDiv for( ind=0; ind<buttonsElements.length ; ind+=2 ){ var newButton=document.createElement( "button" ); newButton.appendChild( document.createTextNode( buttonsElements[ind] ) ); newButton.value=buttonsElements[ind+1]; newButton.id="editableDivControl"+buttonsElements[ind+1]; newButton.onclick=onclickEditableDivControl; controlsDiv.appendChild( newButton ); } document.body.appendChild( controlsDiv ); } </script> </head> <body onload="createControls( document.getElementById( 'editor' ) )"> <div id="editor" ></div> </body> </html>