Twój JS wykonuje się zaraz po wczytaniu strony, dokładnie jeden raz. W 5 linii, pobierasz wartość inputa, która w tym momencie zależnie od przeglądarki będzie pustym stringiem lub undefined. Zapisujesz tę wartośc, a następnie w linii 6 ustawiasz handlera zdarzenia onchange na funkcję która podmieni zawartość strony na zawartość tej zmiennej - czyli wyświetli Ci się pusta strona i wydaje Ci się , że się ona przeładowała. Nie powinieneś używać document.write!
Kod powinien wyglądać tak:
Kod
document.getElementById('id1').onchange = function() {
var value = this.value;
var output = document.getElementById('id2');
output.value = value;
};
Przypisujesz na onchange funkcje, która przy każdej zmianie pobiera wartość inputa o id=id1 i wpisuje jego wartość do inputa o id=id2.
'this' wykorzystane w środku funkcji odnosi się do elementu, na którym się wykonał handler - czyli input o id=id1.