Рещение найдено с помощью вот такой вот функции:
function createSwat(className)
{
var els = YAHOO.util.Dom.getElementsByClassName(className,'textarea'),
textarea_obj=[];
for(var i=0,l=els.length;i<l;i++){
els[i]['id'] = els[i]['id']||('res_'+i);
textarea_obj.push(new SwatTextarea(els[i]['id']));
}
return textarea_obj;
}
В итоге получилось нечто типа (упрощенно)...
function SwatTextarea(id)
{
this.id = id;
YAHOO.util.Event.onContentReady(this.id, this.handleOnAvailable, this, true);
}
SwatTextarea.prototype.handleOnAvailable = function()
{
this.textarea = document.getElementById(this.id);
}
function createSwat(className)
{
var els = YAHOO.util.Dom.getElementsByClassName(className,'textarea'),
textarea_obj=[];
for(var i=0,l=els.length;i<l;i++){
els[i]['id'] = els[i]['id']||('res_'+i);
textarea_obj.push(new SwatTextarea(els[i]['id']));
}
return textarea_obj;
}
YAHOO.util.Event.onDOMReady(function(){createSwat('custom_class')});
Однако это не избавляет нас от id-шников, а даже как бы наоборот. Посему цель не совсем достигнута и вопрос остается открытым (
интересен альтернативный вариант решения проблемы, который позволит полностью избавиться от использования id).