Como puede hacer javascript sincronico

Iniciado por yoelrodguez, 25 Marzo 2017, 01:14 AM

0 Miembros y 1 Visitante están viendo este tema.

yoelrodguez

Hola tengo el siguiente problema. Estoy usando javascript para ir ocultando poco a poco, las palabras de un texto pero lo que me sucede es que no se me está ocultando los segmentos en el orden que quiero, sino que me lo hace indistintamente .

Les dejo el código para ver si me pueden ayudar.

ini = 0
//Conformamos la cadena a trabajar.
for(c = 0; c < v; c++){
a_seg = '';
a_seg = a_str.splice(ini,5);
if(a_seg != ''){
for(s = 0; s < a_seg.length ; s++){
search += a_seg[s]+" ";
}
search = search.trim();
search = search.replace(/&nbsp;/g,"");
var regex = new RegExp(search,'gi');
       $(this).html($(this).text().replace(regex,'<span style="color: #ff0000; font-size: 18px;">'+search+'</span>'));
       $(this).html($(this).text().replace(regex,'<span style="font-size: 18px;"></span>'));
   search = '';
   ini = ini + 5;
}



ThinkByYourself

#1
No veo claro la intención del código, yoelrodguez, y variables sin valor inicial (qué vale v?)

Saludos
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.

yoelrodguez

Aquí te dejo el código completo básicamente lo que haces es ir ocultado un texto por segmentos.


function panime (i = 0){
$("p").html(function(){
val = $(this).html();
str = val.toString();
str = str.replace(/<\/?[^>]+>/gi, '').trim();
a_str = str.split(" ");
//seg = a_str.splice(0,5);
len = a_str.length;
var v = '';
if(len > 5){
v = len / 5;
v = Math.round(v);
}else{
v = 1
}
search = '';
n = 1;
ini = 0
//Conformamos la cadena a trabajar.
for(c = 0; c < v; c++){
a_seg = '';
a_seg = a_str.splice(ini,5);
if(a_seg != ''){
for(s = 0; s < a_seg.length ; s++){
search += a_seg[s]+" ";
}
search = search.trim();
search = search.replace(/&nbsp;/g,"");
var regex = new RegExp(search,'gi');
        $(this).html($(this).text().replace(regex,'<span style="color: #ff0000; font-size: 18px;">'+search+'</span>'));
        $(this).html($(this).text().replace(regex,'<span style="font-size: 18px;"></span>'));
    search = '';
    ini = ini + 5;
}
n++;
}
i++;
});
}

ThinkByYourself

Lo siento. Prueba de usar el debugger del navegador si estás apurao
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.

yoelrodguez

#4
Muchas gracias, le comento que he ido encontrando algunos detalles pero aun no me queda. En cuanto tenga la solución final lo público por si alguien más le haga falta.

Saludos


Acá les dejo la solución que encontré por si alguien mas le haga falta:

function panime (i = 0){

$(ps[i]).text(function(){
if(val != ''){
a_str = $(this).text().trim().split(" ");
len = a_str.length;
var v = '';
if(len > 5){
v = len / 5;
v = Math.round(v);
}else{
v = 1;
}
search = '';
ini = 0;
fin = 5;
//Conformamos la cadena a trabajar.
for(c = 0; c <= v; c++){
a_seg = '';
a_seg = a_str.slice(ini,fin);
if(a_seg != ''){
    hidden_text(a_seg,ps[i]);
    search = '';
    ini = ini + 5;
    fin = fin + 5;
}
}
panime(i + 1);
}
});
}

function hidden_text(a_seg,tp,callback) {

for(i = 0; i < a_seg.length ; i++){
search += a_seg[i]+" ";
}

search = search.replace(/&nbsp;/g,"").trim();
var regex = new RegExp(search,'g');
    $(tp).html($(tp).text().replace(regex,'<span style="color: #ff0000; font-size: 18px;">'+search+'</span>'));

    if (callback && typeof(callback) === "function") {
        callback();
    }
}



MOD EDIT: No hacer doble post. Usa el botón modificar.