Código fuente:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script>
var cuantos;
function pedir()
{
var aux;
aux='e';
while(true)//Hacemos un bucle infinito hasta que nos introduzca un número
{
aux=prompt('Introduzca el número de valores a sumar...','');
if (isNaN(aux))//Comprobamos que el valor introducido, sea un número
{
alert('Deberá de introducir un número');
}
else
return aux;//Si es un número o ha pulsado cancelar, este comando, return, rompe el bucle, devolviendo el valor de aux.
}

}

function primero()
{
cuantos=pedir();
var contador=1;//Variable que nos va a servir de indice.
var suma=0;//Variable para almacenar el contenido de la suma del array.
var array;//Array que va a contener los valores.
var valor=0//Variable, para almacenar el valor que nos introduzca el usuario.
//Ahora una vez que hemos recogido el valor introducido por el usuario, comprobamos que no haya pulsado cancelar.
if (cuantos!=null)//Dato correcto
{
array=new Array(cuantos);//Inicializamos el array tantas posiciones como nos indique cuantos.
while (contador<=cuantos)
{
aux=prompt('Introduzca el valor '+contador,'');
if (isNaN(aux))
alert('Deberá de introducir un número');
else
{
array[contador-1]=aux;//Nos ponemos en la posición del contador -1. Para usar sólamente una variable para todo.
contador++;//Aumentamos 1 en el contador.
}

}
//cuando salgamos del bucle, es que ya ha terminado la introdución de los valores.
contador=0;
while(contador<cuantos)//Hacemos la suma de los valores.
{

suma=suma+parseInt(array[contador]);
contador++;
}

}
if (isNaN(suma)) //Comprobamos, por si acaso nos introducen un cancelar en el prompt.
alert('Se ha producido un error durante la suma, por favor\nvuelva a introducir los datos');
else
document.write('El resultado de la suma es: '+suma);
}

</script>

<body bgcolor="#FFFFFF" onLoad="primero()">

</body>
</html>