您的位置:首页 > Web前端 > JavaScript

《Javascript DOM 编程艺术》

2009-12-03 23:21 288 查看
JS中数组的批量填充方式:

1.在声明时同时进行填充

var beatles = Array("John","Paul","George","Ringo");

2.我们甚至用不着明确地表明我们是在创建数组.事实上,只需用一堆方括号括起来就足以创建我们想要的数组了:

var beatles = ["John","Paul","George","Ringo"];

JS中的关联数组

:JS中数组下标并不局限于整数.数组下标可以是字符串:


var lennon = Array();

lennon["name"]="John";

lennon["year"]="1940";

把一个对象用作一个联合数组

a = {a : "Athens" , b : "Belgrade", c : "Cairo"}


从某种意义上讲,完全可以吧所有的数组都看做是关联数组.数值数组只不过是关联数组的一种特例.

JScript 中的数组是稀疏的。

也就是说,如果一个数组具有三个元素,编号分别为 0、1 和 2,您就可以创建元素 50,而不必担心从 3 到 49 的参数。如果该数组有一个自动的 length 变量,,该 length 变量被设为 51,而不是 4。当然您可以创建各元素的编号之间没有间隙的数组,不过没有必要这样做。

在 JScript 中,对象和数组几乎相同。两个主要差别是对象没有自动长度属性,而数组没有对象的属性和方法。

CSS层叠样式表定义方式:

<p class="special">This<p>

<h2 class="special">So<h2>

1.在样式表里,我们可以像下面这样为class属性值相同的所有元素定义一种共享的样式:

.special{

font-style: italic;

}

// spical为class id

2.我们还可以像下面这样利用class的属性为一种特定类型的元素定义一种独享的样式:

h2.spical{

text-tansform:uppercase;

}

// spical为class id

3.id属性的用途是给网页里的某个元素加上一个独一无二的标识符

<ul id="purchase">

在样式表里我们可以像下面这样为有着特定id属性值的元素定义一种独享的样式:

#purchase{

border:1px;

color:#CCC;

}

4.我们还可以像下面这样利用ID属性为包含在某给定怨毒里的其他元素定义样式,如此定义的样式将只作用于包含在这个给定元素里的有关元素

#purchase li{

font-weight:bold;

}

getElementByTagName使用通配符("*")

document.getElementByTagName("*");//这种方式可以取到文档中所有的元素节点.

如果在onclick事件所触发的Javascript中增加一条return false的话,则可以阻止对事件的进一步处理,阻止链接跳转.

<a href="#" onclick="alert();return false;">firefox</a>

"javascript:"伪协议

可以通过在地址栏输入伪协议来进行调试:javascript:debugger

;

也可以再HTML文档中通过"javascript:"伪协议调用Javascript代码(该种做法并不规范,且语义不清晰,所以也不建议使用):<a href="javascript:alert();">alert</a>

每个函数只有一个入口一个出口

?

理论上该原则比较好,不过过分拘泥于原则往往会使代码变得难于阅读.

同一个函数有多个出口点的情况是可以接受的.不过他们应该集中于该函数的开头部分

function pre(){

if(!document.getElementById) return false;

}

document.write(),innerHtml破坏了js与html分离的原则,应尽量避免使用

insertBefore

previousSibling和nextSibling 兄弟节点取得

for...in 语句:它可以把某个数组的下标(键字)临时地赋值给一个变量,因此可以直接将对象当做联合数组处理

// 初始化对象。

a = {"a" : "Athens" , "b" : "Belgrade", "c" : "Cairo"}

// 迭代属性。

for (key in a) {

s += a[key] ;

}

Title属性:

The Title attribute is similar to the standard HTML Title attribute. The behavior of a title is similar to a Microsoft Windows ToolTip.

使用DOM设置表格交替颜色(斑马线)(ie8不支持exprssion了,现在不能用css中的expression了,呵呵

)


function(){

var tables = document.getElementsByTagName("table");

for(var i = 0; i < tables.length; i++)

{

var odd = false;

var rows = tables[i].getElementsByTagName("tr");

for(var j = 0; j < rows.length; j++)

{

if(odd == true)

{

row[j].style.backgroundColor = "#ffc";

odd = false;

}

else

{

odd = true;

}

}

}

}

CSS中的"追加"效果:

利用字符串拼接操作把新的class设置值追加到className上去(注意,两个class之间有空格分隔),如此便实现了样式叠加,新样式中的定义将在旧样式的基础上产生效果.

elem.className += " intro";

不过空格只有存在旧className属性的基础上才有必要,所以需要先对className进行判断,只有在className属性不为null的时候才需要追加,否则直接赋值.

利用下面的函数实现控件的鼠标跟随(由于控件将以像素为单位来移动,所以动画效果较好)

function moveElement(elementID,final_x,final_y,interval)

{

if(!document.getElementById(elementID)) return false;

var elem = document.getElemenById(elementID);

if(elem.movement)

{

clearTimeout(elem.movement);

elem.movement = null;

}

var xpos = parseInt(elem.style.left);

var ypos = parseInt(elem.style.top);

if(xpos == final_x && ypos == final_y)

{

return true;

}

if(xpos < final_x)

{

xpos++;

}

if(xpos > final_x)

{

xpos--;

}

if(ypos < final_y)

{

ypos++;

}

if(ypos > final_y)

{

ypos--;

}

elem.syle.left = xpos + "px";

elem.syle.top = ytop + "px";

var repeat = "moveElement(" + "'" + elementID + "','" + final_x + "','" + final_y + " '" +")";

element.movement= setTimeOut(repeat, interval);

}

DOM复制节点的方法:cloneNode(deep),这个方法只有一个布尔型的参数,它决定着是否要把被复制节点的子节点也一同复制到新建节点里去.

DOM提供了一个用来替换文档树里的节点的方法:replaceChild(newChild, oldChild),它把给定父元素里的一个子节点替换为另外一个节点,并返回已经被替换的那个子节点.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: