Попробуйте (untested):
$(document).ready(function(){
var div = $('#arch');
var chars = div.text().split('');
div.html('');
for(var i=0; i<chars.length; i++) {
idx = Math.floor(Math.random() * colours.length);
var span = $('<span>' + chars[i] + '</span>').css("color", colours[idx])
div.append(span);
}
}
В принципе, вам нужно дождаться загрузки DOM, чтобы найти div, когда вы вызываете $('#arch')
!
Я не уверен, что вы подразумеваете под «пытались скрестить текст».