1 |
var $id = function(o) {
return document.getElementById(o) || o;
}
var getElementsByClassName = function(className, parent, tag) {
parent = parent || document;
if (parent.getElementsByClassName) {
return parent.getElementsByClassName(className)
} else {
tag = tag || '*';
var returnElements = []
var els = parent.getElementsByTagName(tag);
className = className.replace(/\-/g, "\\-");
var pattern = new RegExp("(^|\\s)" + className + "(\\s|$)");
var i = 0;
while (i < els.length) {
if (pattern.test(els[i].className)) {
returnElements.push(els[i]);
}
i++;
}
return returnElements;
}
}
var getHeight = function(elem) {
if (elem.offsetWidth !== 0) {
return elem.offsetHeight;
}
var temp = 0;
var old = {};
var options = {
position: "absolute",
visibility: "hidden",
display: "block"
}
for (var name in options) {
old[name] = elem.style[name];
elem.style[name] = options[name];
}
temp = elem.offsetHeight;
for (var name in options) {
elem.style[name] = old[name];
}
return temp;
};
function Roll(obj) {
var self = this;
this.wrap = obj.box;
this.interval = obj.interval || 1000;
this.volume = obj.volume || 1;
this.time = 100 / obj.speed || 10;
this.list = getElementsByClassName('RollList', this.wrap)[0];
this.children = this.list.children;
this.init = function() {
if (this.children.length == 0) return false;
this.row = obj.row || getHeight(this.wrap) / getHeight(this.children[0]) | 0;
if (this.children.length < this.row) return false;
if (this.wrap.insertAdjacentHTML) {
this.wrap.insertAdjacentHTML('beforeEnd', this.wrap.innerHTML);
} else {
this.wrap.innerHTML += this.wrap.innerHTML;
this.list = getElementsByClassName('RollList', this.wrap)[0];
this.children = this.list.children;
}
this.timeOpt = setTimeout(this.move, this.interval);
};
this.move = function() {
if (self.list.offsetHeight - self.wrap.scrollTop > 0) {
self.wrap.scrollTop += self.volume;
if (self.wrap.scrollTop % (self.row * self.children[0].offsetHeight) >= self.volume) {
return (self.timeOpt = setTimeout(self.move, self.time));
} else {
return (self.timeOpt = setTimeout(self.move, self.interval));
}
} else {
self.timeOpt = setTimeout(function() {
self.wrap.scrollTop = 0;
self.move()
}, self.interval);
};
};
this.init();
};
new Roll({
box: $id("showbox")
});
| ready |
2 |
var $id = function(o) {
return document.getElementById(o) || o;
}
var getElementsByClassName = function(className, parent, tag) {
parent = parent || document;
if (parent.getElementsByClassName) {
return parent.getElementsByClassName(className)
} else {
tag = tag || '*';
var returnElements = []
var els = parent.getElementsByTagName(tag);
className = className.replace(/\-/g, "\\-");
var pattern = new RegExp("(^|\\s)" + className + "(\\s|$)");
var i = 0;
while (i < els.length) {
if (pattern.test(els[i].className)) {
returnElements.push(els[i]);
}
i++;
}
return returnElements;
}
}
var getHeight = function(elem) {
if (elem.offsetWidth !== 0) {
return elem.offsetHeight;
}
var temp = 0;
var old = {};
var options = {
position: "absolute",
visibility: "hidden",
display: "block"
}
for (var name in options) {
old[name] = elem.style[name];
elem.style[name] = options[name];
}
temp = elem.offsetHeight;
for (var name in options) {
elem.style[name] = old[name];
}
return temp;
};
function Roll(obj) {
var self = this;
this.wrap = obj.box;
this.interval = obj.interval || 1000;
this.volume = obj.volume || 1;
this.time = 100 / obj.speed || 10;
this.list = getElementsByClassName('RollList', this.wrap)[0];
this.children = this.list.children;
this.init = function() {
if (this.children.length == 0) return false;
this.row = obj.row || getHeight(this.wrap) / getHeight(this.children[0]) | 0;
if (this.children.length < this.row) return false;
if (this.wrap.insertAdjacentHTML) {
this.wrap.insertAdjacentHTML('beforeEnd', this.wrap.innerHTML);
} else {
this.wrap.innerHTML += this.wrap.innerHTML;
this.list = getElementsByClassName('RollList', this.wrap)[0];
this.children = this.list.children;
}
this.timeOpt = setTimeout(this.move, this.interval);
};
this.move = function() {
if (self.list.offsetHeight - self.wrap.scrollTop > 0) {
self.wrap.scrollTop += self.volume;
if (self.wrap.scrollTop % (self.row * self.children[0].offsetHeight) >= self.volume) {
return (self.timeOpt = setTimeout(self.move, self.time));
} else {
return (self.timeOpt = setTimeout(self.move, self.interval));
}
} else {
self.timeOpt = setTimeout(function() {
self.wrap.scrollTop = 0;
self.move()
}, self.interval);
};
};
this.init();
};
new Roll({
box: $id("showbox")
});
| ready |