Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/12/2007, 11:52
Avatar de ZydRick
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.