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")[1] has no properties
onclick(click clientX=0, clientY=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.