Buenas.
A existe, es una variable global y la función puede leerla sin problemas. Aunque es cierto que la primera vez que se ejecute va a tener valor "undefined". Lo que hace falta es inicializarla, por ejemplo asignandole 0. Esto además va a impedir que entre en el if (a>0) la primera vez.
El problema que tenía el script está en los for (en los dos). A menos que sea necesario, por experiencia propia, siempre evita errores difíciles de rastrear empezar por 0 y hacer la comparación como < (en vez de <= ). (Muchas veces vas a estar referenciando elementos que internamente se indexan a partir de 0, con lo cual si te acostumbrás a hacerlo así, te ahorrás pasos; además, no tenés que estar sumando/restando en la parte condicional del for, etc: es más prolijo, legible y hasta lógico).
Bueno, cambiando esos detalles, a mí me funciona en FF e IE (entre paréntesis, el código original más innerHTML = "" andaba al pelo en FF, pero IE tiraba error; esa solución era más simple y elegante, pero lamentablemente, no se puede ignorar al IE, que suele ser bastante turrito)
Acá te dejo la parte modificada
Suerte
Califa
Código:
var a = 0;
function cantidad (id)
{
//alert(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=0;w<a;w++)
{
tbody.removeChild(document.getElementById('raw'+w) );
}
}
for (a=0;a<document.forms[0].pjs.value;a++)
{