Capitán, coincido con Vd...
Es cierto que un for puede empezar en cualquier valor e ir "para adelante" o "para atrás", según se necesite. Pero si el valor del contador no es significativo y no lo usamos para ninguna otra cosa que para mantener una referencia interna, termina por ser más simple y práctico empezar de 0, para mí. Fue lo que hice ayer cuando vi el script, para ver si le podía encontrar una solución rápida al problema.
Ahora, revisando de vuelta la otra versión (con a=1 y w=1), encontré el error. Estaba en el primer for:
que estaba haciendo una vuelta de más por la condición w<a+1. Si querés chequealo con estos alerts y vas a ver lo que te digo mejor que si trato de explicártelo con palabras.
Código:
var a = 0;
function cantidad (id)
{
alert("a al inicio="+a);
if (document.forms[0].pjs.value != 0)
{
var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
temp = document.getElementById("raw");
if (a>0)
{
for(w=1;w<a;w++) // antes (w=1;w<a+1;w++)
{
alert("w en remove child="+w);
tbody.removeChild(document.getElementById('raw'+w) );
}
}
for (a=1;a<=document.forms[0].pjs.value;a++)
{
Bueno, cuestión que, como te decía, me parece más fácil arrancar siempre de 0 y usar < en la condición si no es indispensable hacerlo de otra manera, porque te evita estos errores que no son tan fáciles de detectar (yo no lo vi de una, tuve que empezar a poner alerts y demás).
Suerte
Califa