Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как избавиться от ошибки в цепочке функций (https://javascript.ru/forum/misc/28846-kak-izbavitsya-ot-oshibki-v-cepochke-funkcijj.html)

oneguy 06.06.2012 04:16

Ты ошибаешься. Дело не в this, а в том, что я написал несколько постов назад.
Твой последний пример работает, потому что идентификатор $$ теперь используется в другой области видимости - вне кода внутри тэга <div>.
Попробуй написать:
document.getElementsByTagName("div")[2].onclick=function(){
alert($$(this).$$prev().innerHTML);
};

и убрать атрибут onclick в соответствующем <div>,
и всё будет работать.

mrgordon 06.06.2012 22:42

Но ведь если убрать

066	            obj.$$prev = function() {
067	                var elm=this;
068	                do {
069	                    elm = elm.previousSibling;
070	                } while(elm && elm.nodeType != 1);
071	                return _$$.$(elm);
072	            }
073	            obj.$$next = function() {
074	                var elm=this;
075	                do {
076	                    elm = elm.nextSibling;
077	                } while(elm && elm.nodeType != 1);
078	                return _$$.$(elm);
079	            }
080	            obj.$$first = function() {
081	                var elm=this;
082	                elm = elm.firstChild;
083	                return _$$.$(elm && elm.nodeType != 1 ? elm.nextSibling : elm);
084	            }
085	            obj.$$last = function() {
086	                var elm=this;
087	                elm = elm.lastChild;
088	                return _$$.$(elm && elm.nodeType != 1 ? elm.previousSibling : elm);
089	            }
090	            obj.$$parent = function(num) {
091	                var elm=this;
092	                num = num || 1;
093	                for (var i=0; i<num; i++)
094	                if (elm != null) elm = elm.parentNode;
095	                return _$$.$(elm);
096	            }
097	            obj.$$html = function() {
098	                var elm=this;
099	                return _$$.$(elm).innerHTML;
100	            }


то все работает в любой области видимости...

oneguy 07.06.2012 00:41

Можна подробнее, пожалуйста, если то убрать, то что работает?

mrgordon 07.06.2012 15:27

все сам разобрался, нужно заворачивать this в функцию а потом вызывать по onclick ее с передачей ей this


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