trovandosi dentro una funzione, è priva di senso.

Inizializza con scope locale una variabile detta frm e gli assegna null.
Poi invoca una variabile detta prenode, senza premettergli la parola var (immagino conti sulla assegnazione a cascata, ma non assegna valore), per cui è come se invocasse senza scopo una variabile a scope globale, per non farci nulla: sembra un errore concettuale di qualcuno che è abituato a inizializzare in una funzione anche le variabili globali.

Io già solo per quello cambierei script.

codice:
<iframe id="foo" style="width:200px;height:200px;" src=""></iframe>
<select onchange="boh(this);">
<option value="a.txt">file A</option>
<option value="b.txt">file B</option>
</select>

<script>


function boh(form){
document.getElementById('foo').src=form.options[form.selectedIndex].value;
}
</script>
lo script sopra è semplicissimo e carica in un iframe i file a seconda della selezione in un select.
Devi riadattare se serve l'id dell iframe che ora è "foo"

Poi nella select le option devono avere come valore (value="") il file da caricare per ciascuna di loro (inclusivo di percorso se del caso)