Нет. replaceChild удалит один из DOM. Вы хотите insertBefore
var a = document.getElementById('item1');
var b = document.getElementById('item2');
a.parentNode.insertBefore(b, a);
Конечно, это поменяло бы их, только если они были рядом друг с другом.
Вы можете использовать replaceChild
, если хотите поменять местами те, которые не были рядом друг с другом.
var a = document.getElementById('item1');
var b = document.getElementById('item3');
var after_b = b.nextSibling;
var p = a.parentNode;
p.replaceChild(b,a);
if (after_b) {
p.replaceChild(a, after_b);
} else {
p.appendChild(a);
}