//如setTimeout的delay参数为0毫秒,那么指定的函数不会立即执行。只会把它放到队列中,等到前面处于等待状态的事件处理
//程序全部执行完成后,再调用它。
function invoke(f, start, interval, end) {
if (!start) start = 0;
if (arguments.length <= 2) {
setTimeout(f, start);
}
else {
setTimeout(repeat, start);
function repeat() {
var h = setInterval(f, interval);
if (end) {
setTimeout(function () {
clearInterval(h);
}, end);
}
}
}
}
function urlArg() {
var args = {};
var query = location.search.substring(1);
var pairs = query.split('&');
for (var i = 0; i < pairs.length; i++) {
var pos = pairs[i].indexOf('=');
if (pos == -1) continue;
var name = pairs[i].substring(0, pos);
var value = pairs[i].substring(pos + 1);
value = decodeURIComponent(value);
args[name] = value;
}
return args;
}
        //location.search = '?page=' + (pagenum + 1);//载入下一个页面
//showModalDialog("arrayTest.html"); //每一个window对象都有一个frames属性,它引用自身包含的窗口或窗体的子窗体。可通过数字或窗体名称进行索引。名称是指iframe的name或id属性。
//frames数组里的元素师window对象而不是<iframe>元素
//frames['f1']
//alert(window.frames.length) //nodeType : 9 代表document节点,1代表element节点,3代表text节点,8代表comment节点,11代表documentFragment节点。
//nodeValue : text节点或comment节点的文本内容。
//element对象的children属性列表只包含element对象。
//text节点,comment节点没有children属性,意味着node.parentNode属性不可能返回text节点或comment节点,总是返回另一个element
//var attr1 = document.getElementById("sele_file").getAttribute("type");
//getAttribute返回的都是字符串,不返回数值、布尔值或对象
//var attr1 = document.getElementById("sele_file").removeAttribute("disabled");//delete disabled 使其可用
//document.getElementById("sele_file").attributes["type"]
//
        function textContent(element, value) {
var content = element.textContent;//firefox
if (value === undefined) {
if (content) return content;
else return element.innerText;//ie or other
}
else {
if (content) element.textContent = value;
else element.innerText = value;
}
}
//查找元素的后代中节点的所有text节点
function textContentEle(e) {
var child, type, s = "";
for (child = e.firstChild; child != null; child = child.nextSibling) {
type = child.nodeType;
if (type === 3 || type === 4)//text,CDATASection节点
s += child.nodeValue;
else if (type === 1)
s += textContentEle(child);
}
return s;
}
function loadasyuc(url) {
var head = document.getElementsByTagName("head")[0];
var s = document.createElement("script");
s.src = url;
head.appendChid(s);
}
//表格行的排序
function sortRows(table, n, compartor) {
var tbody = table.tBodies[0];
var rows = tbody.getElementsByTagName("tr");
rows = Array.prototype.slice.call(rows, 0);
rows.sort(function (row1, row2) {
var cell1 = row1.getElementsByTagName("td")[n];
var cell2 = row2.getElementsByTagName("td")[n];
var val1 = cell1.innerText || cell1.textContent;
var val2 = cell2.innerText || cell2.textContent;
if (compartor) return compartor(val1, val2);
if (val1 < val2) return -1;
else if (val1 > val2) return 1;
else return 0;
});
//如果调用appendChid在已存在的文档中的一个节点再次插入,那个节点自动从它当前的位置删除并在新的位置重新插入
//所有下面的就没必要显示的删除节点。
for (var i = 0; i < rows.length; i++) {
tbody.appendChid(rows[i]);
}
}
function makeSortable(table) {
var heads = table.getElementsByTagName("th");
for (var i = 0; i < heads.length; i++) {
(function (n) {
heads[i].onclick = function () { sortRows(table, n); };
} (i))
}
}
 //n.parentNode.removeChild(n);//delete n
//倒序排列节点n的子节点
function reverseNodeChild(n) {
var f = document.createDocumentFragment();
while (n.lastChid)//给f添加一个节点,该节点自动地会从n中删除
f.appendChild(n.lastChild);
n.appendChild(f);
}
//left,top表示元素的左上角的x和y坐标,right和bottom属性表示元素的右下角的x和y坐标
//可计算元素的width,height.该方法,在用户滚动或改变浏览器窗口大小时不会更新他们。
var box = document.getElementById("sele_file").getBoundingClientRect();
var boxWid = box.width || (box.right - box.left);
var boxHei = box.height || (box.bottom - box.top);
//alert(boxHei);
//alert(dd.left); //计算e元素的位置要有一个循环
function getElementPos(e) {
var x = 0, y = 0;
while (!e) {
y += e.offsetLeft;
x += e.offsetTop;
e = e.offersetParent;
}
return { x: x, y: y };
}
//元素(div)的width和height只指定了元素内容区域的尺寸,它不包含元素的内边距或边框(或外边距)所需的任何额外空间。
//为了确定有边框元素在屏幕上的全尺寸,必须把元素的宽度加上左右两边的内边距和左右两个边框宽度,高度也一样。
 //classlist
function classList(e) {
if (e.classList) return e.classList;
return new CSSClassList(e);
}
function CSSClassList(e) {
this.e = e;
}
CSSClassList.prototype.contains = function (c) {
if (c.length === 0 || c.indexOf(' ') != -1)
throw "invalid class name:" + c;
var cla = this.e.className;
if (!cla) return false;
if (cla === c) return true; return cla.search("\\b" + c + "\\b") != -1;
}
CSSClassList.prototype.add = function (c) {
if (this.contains(c)) return;
var cla = this.e.className;
if (cla && cla[cla.length - 1] != " ")
c = " " + c;
this.e.className += c;
}
CSSClassList.prototype.remove = function (c) {
if (c.length === 0 || c.indexOf(' ') != -1)
throw "invalid class name:" + c;
var pattern = new RegExp("\\b" + c + "\\b\\s*", "g");
this.e.className.replace(pattern, "");
}
CSSClassList.prototype.toString = function () {
return this.e.className;
} CSSClassList.prototype.toArray = function () {
return this.e.className.match(/\b\w+\b/g) || [];
}
/*
字符串var str = '1,222,33,55,44'.是否包含字符串var cstr='22'
*/
function commaStringContainsStr(str,cstr) {
if (cstr.length === 0 || cstr.indexOf(',') != -1)
throw "invalid name:" + cstr;
if (!str) return false;
if (str === cstr) return true; var pattern = new RegExp("(\\b|,)" + cstr + "(\\b|,)", "g");
return str.search(pattern) != -1;
} //add
function commaStringAddStr(str, cstr) {
if (commaStringContainsStr(str, cstr)) return;
if (str && str[str.length - 1] != ",")
cstr = "," + cstr;
return str + cstr;
}
//remove
function commaStringRemoveStr(str, cstr) {
if (cstr.length === 0 || cstr.indexOf(',') != -1)
throw "invalid name:" + cstr; var pattern = new RegExp("\\b" + cstr + "\\b,*", "g");
str = str.replace(pattern, "");
if (str && str[str.length - 1] == ",") {
str = str.substring(0, str.length - 1);
}
return str;
}
var str1 = '1,222,33,55,44';
var cstr1 = '2';
try {
alert(commaStringRemoveStr(str1, cstr1));
}
catch (e) {
alert(e)
}
    <script id="txt_script" type="text/x-custom-data">
<html><div>sssss</div>
</script>
        // alert(document.getElementById("txt_script").text);
var Insert = (function () {
if (document.createElement("div").insertAdjacentHTML) {
return {
before: function (e, h) { e.insertAdjacentHTML("beforebegin", h); },
after: function (e, h) { e.insertAdjacentHTML("afterend", h); },
atStart: function (e, h) { e.insertAdjacentHTML("afterbegin", h); },
atEnd: function (e, h) { e.insertAdjacentHTML("beforeend", h); }
};
}
function fragment(html) {
var elt = document.createElement("div");
var flag = document.createDocumentFragment();
elt.innerHTML = html;
while (elt.firstChild)
flag.appendChild(elt.firstChild);
return flag;
}
var Insert = {
before: function (elt, html) {
elt.parentNode.insertBefore(fragment(html), elt);
},
after: function (elt, html) {
elt.parentNode.insertBefore(fragment(html), elt.nextSibling);
},
atStart: function (elt, html) {
elt.insertBefore(fragment(html), elt.firstChild);
},
atEnd: function (elt, html) {
elt.appendChild(fragment(html));
}
};
Eelement.property.insertAdjacentHTML = function (pos, html) {
switch (pos) {
case "before":
return Insert.before(this, html);
break;
case "after":
return Insert.after(this, html);
break;
case "atStart":
return Insert.atStart(this, html);
break;
case "atEnd":
return Insert.atEnd(this, html);
break;
}
};
return Insert;
} ());

js权威指南笔记的更多相关文章

  1. JS权威指南笔记之数据类型

    1.类型分为原始类型和对象. 2.原始类型有:数字类型,字符类型,布尔,和null undefind. 3.JavaScript里的函数都是真值. 4.函数和通过New关键字创建对象.这个样函数称为构 ...

  2. JS权威指南笔记1

    1.JavaScript数据类型可分为两种:原始类型和对象类型.原始类型下又包括数字.字符串和布尔值,以及null和undefined这两个特殊的:对象是属性的集合,且每个属性都有自己的"名 ...

  3. 【vue.js权威指南】读书笔记(第一章)

    最近在读新书<vue.js权威指南>,一边读,一边把笔记整理下来,方便自己以后温故知新,也希望能把自己的读书心得分享给大家. [第1章:遇见vue.js] vue.js是什么? vue.j ...

  4. Struts2权威指南笔记

    Struts2权威指南笔记 1.mvc特点包括: ① 多个视图可以对应一个模型 ② 模型返回的数据与显示逻辑分离 ③ 应用层被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性 ④ 控制层的概念也 ...

  5. 《JS权威指南学习总结》

    JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html

  6. 《JS权威指南学习总结--开始简介》

    本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...

  7. 《JS权威指南学习总结--1.1语言核心》

    1.1语言核心 --本节主要介绍<js权威指南>基础部分各章讲解内容和一些简单的示例 本小节内容: 一.第二章讲解js注释.分号和Unicode,第三章主要讲解js变量和赋值 简单示例: ...

  8. Node.js权威指南学习记录

    学习nodeJS权威指南的学习记录 导航: 1.console模块 2.全局变量 3.Buffer对象 4.事件对象 5.网络请求 6.文件操作对象 一. COMMON.js的学习.(commonJS ...

  9. 【vue.js权威指南】读书笔记(第二章)

    [第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...

随机推荐

  1. The connection string 'MysqlEF' in the application's configuration file does not contain the require异常

    在学习EF core first 对接mysql时,出现了这个异常. 原因是:连接字符串中缺少providerName="MySql.Data.MySqlClient" <a ...

  2. @transactional注解下失效

    这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性 先来了解一下@Transactio ...

  3. [HNOI2007]梦幻岛宝珠

    题解: 一道比较好的题目 首先比较显然的就是我们要按照a*2^b的b的顺序来枚举 那么状态f[i][j]表示当前在b,用了a*2^b 刚开始没想到怎么不同层之间搞 看了题解发现非常简单 由于每一层到最 ...

  4. js与jquery常用数组方法总结

    昨天被问数组方法的时候,问到sort()方法是否会改变原来的数组.本来我猜是不会,也是这么说,马上我又觉得,知识这种东西,不确定的时候直接说不确定或不知道就好,只是凭借着不确定的猜测或者是记忆,害人害 ...

  5. HTML中鼠标滚轮事件onmousewheel

    IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件. /*IE注册事件*/ if(document.attachEvent){ document.attachEvent('onm ...

  6. PHP算法排序之快速排序、冒泡排序、选择排序、插入排序性能对比

    <?php //冒泡排序 //原理:从倒数第一个数开始,相邻的两个数比较,后面比前面的小,则交换位置,一直到比较第一个数之后则最小的会排在第一位,以此类推 function bubble_sor ...

  7. 基于C语言的Socket网络编程搭建简易的Web服务器(socket实现的内部原理)

    首先编写我们服务器上需要的c文件WebServer.c 涉及到的函数API: int copy(FILE *read_f, FILE * write_f) ----- 文件内容复制的方法 int Do ...

  8. RPG

    有排成一行的n个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.以上就是著名的RPG难题. 解 ...

  9. Scala-Unit-1-概述及安装

    一.Scala简介 官网:www.scala-lang.org Scala语言很强大,它集成了面对对象和函数式编程的特点,并且运行在JVM(Java Virtual Machine)上,即必须安装jd ...

  10. Java中 输入字符串的时候next()和nextLine()有什么区别

    假设有一段文本如下:abc def ghijkl mno pqr stuvw xyz 用next(),第一次取的是abc,第二次取的是def,第三次取的是ghij用nextLine(),第一次取的是a ...