Originariamente inviato da Enzaccio
L' unica cosa per sospendere un ciclo for in corso di esecuzione, è di metterci in mezzo un alert() che ti vedrai saltar su a chiedere Ok ad ogni "colpo" del for.

Questo perché gli alert, prompt e confirm giocano ad un livello "più profondo" nel software del browser.
Difficilmente si potrebbe ottenere un controllo analogo da un type="button" credo.

Per realizzare quello che intendi ottenere, abbandonerei il loop for e mi baserei sulla ricorsione: una funzione che richiama se stessa.
Il richiamo lo possiamo differire con un setTimeout() (temporizzatore).
Prova questo modellino:
codice:
<html><head><title>sliding div</title>

<script type="text/javascript">

var mL = 0;

function moveR(){
   mL = mL + 4; //numero di pixel in aggiunta
    document.getElementById("thing").style.marginLeft = mL + "px";

   TimerLeft = setTimeout('moveR();', 100); //in milli-secondi
 };


function rest(){
   
   clearTimeout(TimerLeft);
 };

</script>

</head><body>

<div id="thing" style="width: 100px; height: 50px; border: 1px solid red;"></div>
<hr>
<input value="move right" type="button" onclick="moveR()">
<input value="stop"       type="button" onclick="rest();">

</body></html>
Insorgerà una problematica (prevista) se clicchi ripetutamente ...
Beh, per ovviare alla problematica basterebbe aggiungere quesot prima del setTimout:
if ( TimerLeft != undefined && TimerLeft != null ) clearTimeout ( TimerLeft ) ;