先端開発常用関数と小技(持続更新)
11160 ワード
日常のプロジェクトで使うものとネットで収集するものです.
不定幅の高さの要素を中央に表示します.
不定幅の高さの要素を中央に表示します.
position:absolute;
left:50%;
top:50%;
-webkit-transform:translate(-50%,-50%);
transform:translate(-50%,-50%);
DOM取得方法// id,class,tagname
var get = {
byId: function (id) {
return document.getElementById(id)
},
byClass: function (sClass, oParent) {
var aClass = [];
var reClass = new RegExp("(^| )" + sClass + "( |$)");
var aElem = this.byTagName("*", oParent);
for (var i = 0; i < aElem.length; i++) {
// && , ture ,
reClass.test(aElem[i].className) && aClass.push(aElem[i]);
}
return aClass
},
byTagName: function (elem, obj) {
return (obj || document).getElementsByTagName(elem)
}
};
//
function getByClass(oParent, sClass) //oParent DOM ,sClass {
var aEle = oParent.getElementsByTagName('*');
var aResult = [];
var re = new RegExp('\\b' + sClass + '\\b', 'i');
var i = 0;
for (i = 0; i < aEle.length; i++) {
if (re.test(aEle[i].className)) {
aResult.push(aEle[i]);
}
}
return aResult;
// DOM
}
window onloadは何度も傍受することを実現します.function addloadEvent(func){
var oldonload=window.onload;
if(typeof window.onload !='function'){
window.onload=func;
}
else{
window.onload=function(){
oldonload();
func();
}
}
}
insertAfterfunction insertAfter(newElement,targetElement){
var parent=targetElement.parentNode;
if(parent.lastChild === targetElement){
parent.appendChild(newElement);
}else{
parent.insertBefore(newElement,targetElement.nextSibling);
}
}
文字列の繰り返し// array join , , str ,
function repeatstr(str,n){
return new Array(n+1).join(str);
}
console.log(repeatstr('hi',3));
urlを取得しますか?後ろのパラメータ値 // :
function getQueryString(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
// :
alert(GetQueryString(" 1"));
alert(GetQueryString(" 2"));
alert(GetQueryString(" 3"));
// :split
function GetRequest() {
var url = location.search; // url "?"
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return theRequest;
}
var Request = new Object();
Request = GetRequest();
// var 1, 2, 3, N;
// 1 = Request[' 1'];
// 2 = Request[' 2'];
// 3 = Request[' 3'];
// N = Request[' N'];
jsは、add(1)(2)(3)の呼び出しと同様の方法を実現する.function add(x) {
var sum = x;
var tmp = function (y) {
sum = sum + y;
return tmp;
};
tmp.toString = function () {
return sum;
};
return tmp;
}
console.log(add(1)(2)(3)); //6
console.log(add(1)(2)(3)(4)); //10
/* , , tmp x , add(), tmp, x tmp , tmp tmp , tmp, tmp , tmp, tmp x sum, */
/* tmp , , , JavaScript , , toString valueOf , tmp toString valueOf , sum */
測定対象{}は空の対象ですか?/* * ( )。 // * , 。 */
function isOwnEmpty(obj) {
for(var name in obj)
{
if(obj.hasOwnProperty(name))
{
return false;
}
}
return true;
};
/* * ( )。 * , ( hasOwnProperty)。 */
function isEmpty(obj) {
for (var name in obj)
{
return false;
}
return true;
};