Хз правильно ли я понял, вот решение на коленке:
<script type="text/javascript">
function XZ(elem,str,speed) { //если второй параметр строка - идёт прибавление, иначе урезание
speed||(speed=100);
if(typeof str == 'string'){
var i=0, l=str.length;
(function(){
elem.value+=str.charAt(i++);
i<l&&setTimeout(arguments.callee,speed)
})()
}
else{
(function(){
(elem.value=elem.value.slice(0,-1))&&setTimeout(arguments.callee,str||speed)
})()
}
}
</script>
<input type="button" value='Кнопка' onclick="XZ(this,1000)"/>
<input type="button" value='Кнопка' onclick="XZ(this)"/>
<input type="button" value='Кнопка' onclick="XZ(this,' - длинная')"/>
<input type="button" value='Кнопка' onclick="XZ(this,' - длинная',300)"/>