文章列表
弧度和角度
角度: rotation属性 投影滤镜(drop shadow filter)
弧度: Math.sin之类的都是用弧度
弧度(radians) = 角度(degrees) * Math.PI /180
角度(degrees) = 弧度(radians) * 180 / Math.PI
1. x, y(FF不支持)
相对于浏览器窗口可视文档区域左上角的位置,IE例外,表示相对于文档开头的位置
2. pageX, pageY(IE不支持)
相对于文档开头的位置,如果有滚到条,也包括在内,IE中,使用x, y
3. offsetX, offsetY(FF不支持)
相对于event.target左上角的位置
4. layerX, layerY(Opera和IE不支持)
等价于pageX, pageY
5. clientX, clientY
创建表格
一般把<table>....</table>拼成一个字符串,再以innerHTML的形式加入一个容器
var start = new Date().getTime(),
len = 2000,
arr = ['<table><tbody>'],
div = document.createElement('div'),
tr, td, div, i, j;
for(i = 0; i < len; i++){
arr.push('<tr>')
for(j = 0; j < 20 ...
<table>元素具有的属性和方法:
caption
tBodies
tFoot
tHead
rows
createTHead()
createTFoot()
createCaption()
deleteTHead()
deleteTFoot()
deleteCaption()
deleteRow(pos)
insertRow(pos)
<tbody>元素具有的属性和方法:
rows
deleteRow(pos)
insertRow(pos)
<tr>元素具有的属性和方法:
cells
deleteCe ...
刚看到的一种新方法,rows数组里面存的不是tr对象,而是一个数组,数组元素的结构为
{[0, 1, 2, ...], HTML}
数字表示该行单元格内容
HTML表示 该行的HTML字符串形式
1.用innerHTML清除节点时,节点的事件处理程序极有可能无法被回收
2.如果页面在卸载前没有清理干净事件处理程序,那么就会留在内存中,每次加载完页面再卸载时(在两个页面间来回切换或刷新页面),内存中滞留的对象数量就会增加,因为事件处理程序占用的内存没有被释放
function fun1(){
var undefined, a;
for(var i = 0; i < 100000; i++){
a === undefined;
}
}
function fun2(){
var a;
for(var i =0; i < 100000; i++){
a === undefined;
}
}
var start = new Date().getTime();
fun1();
var end = new Date().getTime( ...
有两种方法:obj[name] 和 'name' in obj
试了下10万次取值比较,一般来说第一种方式稍快一些些
1.innerHTML
var div = document.createElement('div'),
fragment = document.createDocumentFragment(),
str = '<div><h1>11</h1><ul><li>1</li><li>2</li></ul></div>',
node;
div.innerHTML = str;
while((node = div.firstChild)){
fragment. ...
一个范围具有两个边界点,即一个开始点和一个结束点。每个边界点由一个节点和那个节点的偏移量指定。该节点通常是 Element 节点、Document 节点或 Text 节点。对于 Element 节点和 Document 节点,偏移量指该节点的子节点。偏移量为 0,说明边界点位于该节点的第一个子节点之前。偏移量为 1,说明边界点位于该节点的第一个子节点之后,第二个子节点之前。但如果边界节点是 Text 节点,偏移量则指的是文本中两个字符之间的位置。
1.创建
var range = document.createRange();
2.属性
属性全部为read-only
start ...
1.IE自动消除空白符
var div = document.createElement("div");
div.innerHTML = " <p> <b> hello </b>js </p> ";
console.log("|" + div.innerHTML + "|")
IE8: |<P><B>hello </B>js </P>|
Chrome: | <p> ...
jQuery源码 —each方法
- 博客分类:
- jQuery
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
// 这样判断是否为Object还挺奇怪的,下面的代码根据{key:value}和[]两种类型进行遍历
// 一般来说,Element和{}对象的length属性是undefined
isObj = length === undefined || jQuery.isFunction( object );
if ( args ) {
if ( isObj ) {
for ( n ...
Query源码 — after方法
- 博客分类:
- jQuery
after方法定义在jQuery.prototype
after: function() {
if ( this[0] && this[0].parentNode ) {
return this.domManip(arguments, false, function( elem ) {
this.parentNode.insertBefore( elem, this.nextSibling );
});
} else if ( arguments.length ) {
var set = this.pushStack( this, " ...
trim方法定义在jQuery.prototype
var trim = String.prototype.trim,//在jQuery闭包最开始的地方定义的
trimLeft = /^[\s\xA0]+/;
trimRight = /[\s\xA0]+$/;
······
······
// Use native String.trim function wherever possible
trim: trim ?
function( text ) {
return text == null ?
"" :
trim.call( ...
本方法定义在jQuery.prototype
addClass: function( value ) {
var classNames, i, l, elem,
setClass, c, cl;
if ( jQuery.isFunction( value ) ) {
return this.each(function( j ) {
jQuery( this ).addClass( value.call(this, j, this.className) );
});
}
if ( value && typeof ...