Foros del Web » Programando para Internet » PHP »

Duda con tag [spoiler] para sistema de foro

Estas en el tema de Duda con tag [spoiler] para sistema de foro en el foro de PHP en Foros del Web. Hola amigos, tengo un pqueño problema con el famoso tag [spoiler] que agregué en mi foro(el foro lo programé yo) y bueno, el problema que ...
  #1 (permalink)  
Antiguo 21/12/2007, 11:52
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Duda con tag [spoiler] para sistema de foro

Hola amigos, tengo un pqueño problema con el famoso tag [spoiler] que agregué en mi foro(el foro lo programé yo) y bueno, el problema que tengo es que cuando se hace uso de este tags más de una vez dentro de un mismo post este deja de funcioar pero si se agrega una sola vez sí funciona bien, la parte de código que corresponde a ese tag es la siguiente:

Código PHP:
function bbcode($string){
    
$string nl2br(htmlspecialchars($string));
    
$patterns = array(
        
// aqui más tags
        
'`\[size=([1-6]+)\](.+?)\[/size\]`is',
        
'`\[spoiler\](.+?)\[/spoiler\]`is' // este es el tag para el spoiler
    
);
    
$replaces =  array(
        
'<h\1>\2</h\1>',
        
// aqui reemplazo el tag SPOILER
        
'<div class="pre-spoiler">
            <input type="button" value="Mostrar Spoiler" onclick="if (this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display != \'\') { this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display = \'\';this.innerText = \'\'; this.value = \'Esconder Spoiler\'; } else { this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display = \'none\'; this.innerText = \'\'; this.value = \'Mostrar Spoiler\'; }" />
        </div>
        <div>
            <div class="spoiler" style="display: none;">\1</div>
        </div>'
    
);
    
$string preg_replace($patterns$replaces$string);
    return 
$string;
    } 
Cuando un usuario ha hecho uso de más de un tags SPOILER dentro de un mismo post este deja de funcionar y mirando en el Firebug me dice que la falla está aquí:

Código PHP:
this.parentNode.parentNode.getElementsByTagName("div")[1].getElementsByTagName("div")[1has no properties
onclick
(click clientX=0clientY=0
El código del botón que muestra y oculta el contenido lo tomé de un foro que usa el sistema vBulletin, pero no entiendo como al usarlo en mi foro no funciona, espero que me puedan echar una mano con esto. Gracias por anticipado.

Saludos.
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 21:53.