Foros del Web » Programando para Internet » Javascript » Frameworks JS »

evitar que función me tome un texto como texto plano

Estas en el tema de evitar que función me tome un texto como texto plano en el foro de Frameworks JS en Foros del Web. Que tal forer@s, necesito sus conocimientos, ya que los mios son verdes aun, veran: De alguna manera una función toma el texto que encuentre entre ...
  #1 (permalink)  
Antiguo 10/09/2012, 11:38
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 7 meses
Puntos: 23
evitar que función me tome un texto como texto plano

Que tal forer@s, necesito sus conocimientos, ya que los mios son verdes aun, veran:

De alguna manera una función toma el texto que encuentre entre las etiquetas <li> y </li> y lo muestra en un organigrama, si tuviera <li><ul><li></li></ul></li> la funcion es capas de identificar la estructura y crear el organigrama de los niveles segun listas encuentre.

Bueno aqui mi problema es que, como comento, el texto que encuentre entre <li></li> lo toma, pero lo toma algo asi como texto plano, es decir si yo pongo alguna etiqueta a este texto simplemente la "desecha", por ejemplo:

Código HTML:
<li>
     nivel <b>1</b><br />
     <b>nombre del nivel</b>
</li> 
ese texto saldría en una sola linea y sin las negritas

Y pues por requerimientos necesito poder darle cierto formato a ese texto.

La parte de la funcion que hace el cambio o toma el texto es esta:

Código Javascript:
Ver original
  1. $.fn.orgChart = function(options, $appendTo) {
  2.     var opts = $.extend({}, $.fn.orgChart.defaults, options);
  3.  
  4.     return this.each(function() {
  5.       $this = $(this);
  6.       var $container = $("<div class='" + opts.chartClass + "'/>"); //aca busca el contenedor de las listas
  7.       if($this.is("ul")) {
  8.         buildNode($this.find("li:first"), $container, 0, opts); //pregunta si es el primer li y le asigna la funcion builNodes
  9.       }
  10.       else if($this.is("li")) { //si no es el primer li, le asigna la misma funcion pero con otros parametros
  11.         buildNode($this, $container, 0, opts);
  12.       }
  13.       $appendTo.append($container);
  14.     });
  15.   };
  16.  
  17.   $.fn.orgChart.defaults = {
  18.     depth      : -1,
  19.     stack      : false,
  20.     chartClass : "orgChart",
  21.     hoverClass : "hover",
  22.     nodeText   : function($node) {return "";}
  23.   };
  24.  
  25.   function buildNode($node, $appendTo, level, opts) {
  26.     var $table = $("<table cellpadding='0' cellspacing='0' border='0'/>");
  27.     var $tbody = $("<tbody/>");
  28.  
  29.     // Make this node...
  30.     var $nodeRow = $("<tr/>").addClass("nodes");
  31.     var $nodeCell = $("<td/>").addClass("node").attr("colspan", 2);
  32.     var $childNodes = $node.children("ul:first").children("li");
  33.     if($childNodes.length > 1) {
  34.       $nodeCell.attr("colspan", $childNodes.length * 2);
  35.     }
  36.     [B]var $heading = $("<h2>").text(opts.nodeText($node));[/B] //aqui creo que es donde toma el texto lo guarda en la variable heading
  37.     [B]$nodeDiv = $("<div>").addClass("node").append($heading);[/B] //aqui al texto lo asigna a un div y a este le pone la clase que lo muestra como una cajita
  38.     $nodeCell.append($nodeDiv); //aca me supongo que dibuja las lineas que conectan las cajitass
  39.     $nodeRow.append($nodeCell);
  40.     $tbody.append($nodeRow);
  41.  
  42. ...

Bueno a mi poco conocimiento y mi entender creo que en estas lineas esta el asunto

var $heading = $("<h2>").text(opts.nodeText($node));
$nodeDiv = $("<div>").addClass("node").append($heading);

heading es el texto "en plano" entonces .text quita las etiquetas o como??

si alguien me puede dar su punto de vista se los agradeceré infinitamente
  #2 (permalink)  
Antiguo 10/09/2012, 11:47
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: evitar que función me tome un texto como texto plano

trata de cambiar haber el .text por .html
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 10/09/2012, 13:15
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 7 meses
Puntos: 23
Respuesta: evitar que función me tome un texto como texto plano

ya probé así y tampoco toma en cuenta las etiquetas :/
  #4 (permalink)  
Antiguo 10/09/2012, 19:34
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 7 meses
Puntos: 23
Respuesta: evitar que función me tome un texto como texto plano

Bueno que parece que ya lo resolví lo que hice fue:

//var $heading = $("<h2>").text(opts.nodeText($node)); //comentar esta linea
$nodeDiv = $("<div>").addClass("node").append($node); //en lugar de hacer el append a $heading se lo hago $node

Y funciona, sigo sin saber porque :$

ahora el siguiente reto es poner una imagen

Etiquetas: funcion, plano
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 23:28.