Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Textarea resizer on YUI (https://javascript.ru/forum/library-toolkit-framework/15224-textarea-resizer-yui.html)

Syn 17.02.2011 23:40

Textarea resizer on YUI
 
Подскажите пожалст, каким макаром переделать данный кусок кода, чтобы инициализировался объект не по id, а по его class

function SwatTextarea()
{
        YAHOO.util.Event.onContentReady('myid', this.handleOnAvailable, this, true);
}
SwatTextarea.prototype.handleOnAvailable = function()
{
        this.textarea = document.getElementById('myid');
}

Syn 25.02.2011 20:13

Рещение найдено с помощью вот такой вот функции:
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).


Часовой пояс GMT +3, время: 11:27.