Ребят, помогите разобраться с функцией
Всем доброго времени суток. Столкнулся с функцией следующего содержания:
function geByClass ( searchClass, node, tag ) { var classElements = new Array( ); if ( node == null ) { node = document; } if ( tag == null ) { tag = '*'; } if ( node.getElementsByClassName ) { classElements = node.getElementsByClassName( searchClass ); if ( tag != '*' ) { for ( var i = 0; i < classElements.length; i++ ) { if ( classElements.nodeName == tag ) { classElements.splice( i, 1 ); } } } return classElements; } var els = node.getElementsByTagName( tag ); var elsLen = els.length; var pattern = new RegExp( '(^|\\s)' + searchClass + '(\\s|$)' ); for ( var i = 0, j = 0; i < elsLen; i++ ) { if ( pattern.test( els[ i ].className ) ) { classElements[ j ] = els[ i ]; j++; } } return classElements; } Функция используется ВКонтакте. Копался, копался и в итоге зашел в тупик. :-/ Например, как может быть вызван slice( ) для classElements? Условие if ( classElements.nodeName == tag ) { ... } в цикле for ( var i = 0; i < classElements.length; i++ ) { ... }. :stop: Насколько я понимаю, nodeName нужно указывать у каждого элемента classElements. Да и вообще не могу понять смысл всех этих конструкций. Ведь всегда функция будет возвращать массив объектов, найденных по классам (return classElements в первой части функции), а не по тегам с указанными классами. :-E Если не сложно, можно объяснить смысл поверхностно. Да и вообще ваше мнение о ней. Спасибо. :thanks: |
Часовой пояс GMT +3, время: 19:28. |