Dal momento in cui si lavora con i timer bisogna capire che i programmi js non si comportano più in maniera sequenziale.

Se guardi lo script sotto vedrai che la logica è del tutto diversa.

codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
</head>
<body>

<table summary="">
<tr>
<td id="range_count"></td>
</tr>
</table>

<script language="JavaScript" type="text/javascript">
<!--
secondi = 0; 
stop    = 0; 
ind     = 0;

function conta_all(str_range){ 
    arr_ip = str_range.split(';'); 
		//------ Primo range
		ind    = 0;
		conta_single_range(arr_ip[ind]);
		//------ Conta
		conta();
} // function conta_all(str_range)


function conta_single_range(str_range2){ 
    ar_range = str_range2.split('-'); 
    start_ip  = ar_range[0]; 
    stop_ip   = ar_range[1]; 
    byt_start = start_ip.split('.'); 
    byt_stop  = stop_ip.split('.'); 
         
    secondi   = byt_start[3]; 
    stop      = byt_stop[3]; 
    ip_str    = byt_start[0]+"."+byt_start[1]+"."+byt_start[2]; 
} // function conta_single_range(str_range2)


function conta() { 
 if (secondi > stop) {
	if (ind >= arr_ip.length-1) {
	 //------- Se tutti i range sono stati trattati mi fermo
	 return;
	} else {
   //------- Passo al range successivo
	 ind++;
	 conta_single_range(arr_ip[ind]);
	} //if (ind > arr_ip.length-1) 
 } // if (secondi == stop)
 
 document.getElementById('range_count').innerHTML= "Sfoglia il gruppo" + "
"+ ip_str+"."+secondi; 
 secondi++ ; 
 setTimeout("conta()",200);
} // function conta()




//uso della funzione 
conta_all("192.168.0.180-192.168.0.200;192.168.3.1-192.168.3.40");

//-->
</script>

</body>
</html>