Aunque lo curioso es que compruebo también que no es necesario el if. En cada llamada a la función se elimina el elemento script anterior, ya que sige apareciendo 2 como resultado:
Código PHP:
<html>
<head>
<script>
function SetContainerHTML(id_contenedor,responseText)
{
mydiv = document.getElementById(id_contenedor);
mydiv.innerHTML = responseText;
var elementos = mydiv.getElementsByTagName('script');
for(i=0;i<elementos.length;i++) {
old=document.getElementById('prefix'+i);
//if(old)mydiv.removeChild(old)
var elemento = elementos[i];
nuevoScript = document.createElement('script');
nuevoScript.text = elemento.innerHTML;
nuevoScript.type = 'text/javascript';
//nuevoScript.id = 'prefix'+i;
if(elemento.src!=null && elemento.src.length>0)
{nuevoScript.src = elemento.src;}
elemento.parentNode.replaceChild(nuevoScript,elemento);
}
}
txt='hola<scr'+'ipt>alert("hola");alert(document.getElementsByTagName("script").length);</sc'+'ript>';
</script>
</head>
<body>
<div id="pepe" onClick="SetContainerHTML('pepe',txt)">bla</div>
</body>
</html>
Siempre devuelve 2