Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <script type="text/javascript">
- /**
- These are the answares for Q3 in the JavaScript Section[a-d] with some little closures help :P
- Im sure its far from perfect, but i think its cover the principles
- UTY('div').addClass('makemered');
- UTY('div').removeClass('makemered');
- UTY('div').toggleClass('makemered');
- Tools.data(UTY('div').elements, 'asd', 'lalala');
- The last one $(‘#main li.item a’) is just a selector so we can use just document.querySelectorAll
- **/
- function my(){
- function UTY(input){
- elements = document.querySelectorAll(input);
- return {
- elements: elements,
- addClass:function(className){
- Tools.each(elements, function(){
- curr_classess = Tools.fetchClasses.call(this);
- curr_classess.push(className);
- Tools.setClasses.call(this,
- curr_classess
- );
- });
- },
- removeClass:function(className){
- Tools.each(elements, function(){
- curr_classess = Tools.fetchClasses.call(this);
- new_classess = [];
- for(i = 0; i < curr_classess.length; i++) {
- if(curr_classess[i] != className) {
- new_classess.push(curr_classess[i]);
- }
- }
- Tools.setClasses.call(this,
- new_classess
- );
- });
- },
- toggleClass:function(className){
- this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
- },
- hasClass:function(className){
- has = false;
- Tools.each(elements, function(){
- regE = new RegExp('$| ' + className + '^| ');
- cval = this.getAttribute('class');
- if(typeof cval == 'undefined' || cval == null || cval == '') {
- return true;
- }
- has = cval.search(regE) > -1;
- return !has;
- }
- );
- return has;
- },
- };
- }
- return UTY;
- }
- Tools = {
- each: function(collection, callback) {
- if(collection instanceof Array) {
- for(i = 0; i < collection.length; i++) {
- ret = callback.call(collection[i], i, collection[i]);
- if(typeof ret != 'undefined') {
- if(!ret)
- break;
- }
- }
- } else {
- for(propi in collection) {
- if(collection.hasOwnProperty(propi)) {
- ret = callback.call(collection[propi], propi, collection[propi]) ;
- if(typeof ret != 'undefined') {
- if(!ret)
- break;
- }
- }
- }
- }
- return collection;
- },
- fetchClasses: function() {
- return this.hasAttribute('class') ? this.getAttribute('class').split(' ') : [];
- },
- setClasses: function(clsses) {
- this.setAttribute('class', clsses.join(' '));
- },
- data: function(elements, key, value) {
- Tools.each(elements, function(){
- this.dataset[key] = value;
- });
- },
- };
- UTY = my();
- </script>
- <style>
- div.makemered {
- color: red;
- }
- </style>
- </head>
- <body>
- <div>asd</div>
- <div>asd</div>
- <div>asd</div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment