エラーの行数と例外の種類も忘れずに。
Error: uncaught exception: [Exception... "Node was not found"
code: "8" nsresult: "0x80530008 (NS_ERROR_DOM_NOT_FOUND_ERR)"
location: "************** Line: 64"]
エラーの直接の発生行は以下。
rightNode.removeChild(document.getElementById(tempAry[i]));
エラーの種類は「NS_ERROR_DOM_NOT_FOUND_ERR」。ここで、「NS_ERROR_DOM_」は Gecko 特有の接頭辞だから無視するとして、「NOT_FOUND_ERR」が removeChild() で発生する条件を調べる。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/Core/Node.html#Node-removeChild
nodeObject.removeChild( oldChild )
....
NOT_FOUND_ERR / DOMException
oldChild がこのノードの子でない場合に発生。
つまり、document.getElementById(tempAry[i]) が rightNode の子ではない、と言われている。
なぜか。根本的な原因は以下の部分。
optionNode = document.createElement('option');
optionNode.appendChild(textNode);
optionNode.id = rightNode.options[i].id;
optionNode.value = rightNode.options[i].value;
leftNode.appendChild(optionNode);
同一ドキュメント内で ID 重複が発生している。この場合の getElementById() の動作は実装依存だが、多くの実装では最初に見つけたノードを返す。従って、上述の document.getElementById(tempAry[i]) は rightNode の子ではなく、文書内順序で前の方にある leftNode の子を返す可能性が高い。
そもそも、マトモな DOM 実装なら leftNode.appendChild (rightNode.options[i]) でノードを移動できる。いちいちクローンを(しかも cloneNode() も使わず)作る必要なんてないわけだ。
ついでに、ID 型の属性は数字で始めることはできない。それ以外にも、>>0 のソースでは省略不可能な要素が省略されているし、逆に省略可能な要素がご丁寧に書かれているし、もう少し HTML の文法に気を付けた方が良いと思う。DOM-HTML は、DTD を知らないとドツボにはまるよ(特にデフォルト内容の有無)。