It's not that your code only works once, your problem is that you only generate the random number once, so you always get the same result. Move the number generation inside the function and it works:
var newwords = ["NEWWORD1", "NEWWORD2", "NEWWORD3"];
$(document).keypress(function(e){
if ($(e.target).is('input, textarea')) {
return;
};
var rand_new = newwords[Math.floor(Math.random() * newwords.length)];
if (e.which === 97 || e.which === 108) {
document.getElementById("abc").firstChild.nodeValue = rand_new;
};
});
jsfiddle: http://jsfiddle.net/R5vqM/1/